.NET 类型转换问题还是.NET BUG或者是系统问题?

jruinet 2013-07-09 09:24:44
类型“System.Decimal”的对象无法转换为类型“System.Int64”。

异常信息:
异常类型: ArgumentException
异常消息: 类型“System.Int64”的对象无法转换为类型“System.String”。
在 System.RuntimeType.TryChangeType(Object value, Binder binder, CultureInfo culture, Boolean needsSpecialCast)
在 System.RuntimeType.CheckValue(Object value, Binder binder, CultureInfo culture, BindingFlags invokeAttr)

在执行这句话时发生的异常, dr[i]中有值且值是有效数据.
property.SetValue(model, dr[i], null);

这个异常不是一直都有,系统运行几天或者十多天后会出现,一但出现只有重启IIS,我认真研究了代码应该不是代码和数据的问题.因为这一错误的地方就是将datatable转为一个list<_T>的实体.不会是代码造成的.所以一直找不到问题出在哪里.大神们帮忙看看.
...全文
119 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jack43349489 2013-07-09
  • 打赏
  • 举报
回复
日志是最有用的办法,系统一旦上线只能靠日志了,并且日志要写的够详细或者说把关键的东西都要记录。 转换前的类型,值 - 转换后的类型,值等等。
jack43349489 2013-07-09
  • 打赏
  • 举报
回复
你的dr[i]应该是数值的字符串,例如“123”,如果真的是int类型,直接就会报错了。

public class A    
{        
public string Name { get; set; }    
}            
A a = new A();            
PropertyInfo p = typeof(A).GetProperty("Name");            
p.SetValue(a, 10, null);
这个就会直接报错的。
cheng2005 2013-07-09
  • 打赏
  • 举报
回复
引用 7 楼 jruinet 的回复:
不好意思.我纯小白. 但是我是从dr里获取的值,都是对应的属性里的类型,而且并不是每次都会报错.如果按你这种写法是每执行就会报错了.所以我一直找不到是哪里的问题.希望大哥不要生气
调试啊,日志啊,别遇见问题先一口咬定自己的代码和数据没错误,既然没错误那还找什么。
jruinet 2013-07-09
  • 打赏
  • 举报
回复
不好意思.我纯小白. 但是我是从dr里获取的值,都是对应的属性里的类型,而且并不是每次都会报错.如果按你这种写法是每执行就会报错了.所以我一直找不到是哪里的问题.希望大哥不要生气
cheng2005 2013-07-09
  • 打赏
  • 举报
回复
引用 4 楼 jruinet 的回复:
为属性赋值是会自动转换的 property.SetValue(model, dr[i], null); M_Department model = new M_Department(); PropertyInfo[] propertys = model.GetType().GetProperties(); foreach (PropertyInfo property in propertys) { property.SetValue(model, dr[i], null); i++; } 而且这里面就3条数据.每天会执行上千次都不会出问题.但是一但这里出问题.整个系统就不能使用了.只能重启IIS,而且伴随着各种怨念的其它异常,比如数据库中的字断无法找到之类的就出来了,但重启IIS后又能管很多天.这个代码从事件日志中是第一个出现.如果不出现这个异常,系统不会出问题.
为属性赋值是会自动转换的?? 放屁!别丢人了好吗
    
public class A
    {
        public string Name { get; set; }
    }
            A a = new A();
            PropertyInfo p = typeof(A).GetProperty("Name");
            p.SetValue(a, 10, null);

jruinet 2013-07-09
  • 打赏
  • 举报
回复
主要是这个异常不可复制,在调试的时候重来不出现.只有系统运行一段时间后才出来,而且时间随机.在这期间运行都正常
jruinet 2013-07-09
  • 打赏
  • 举报
回复
为属性赋值是会自动转换的 property.SetValue(model, dr[i], null); M_Department model = new M_Department(); PropertyInfo[] propertys = model.GetType().GetProperties(); foreach (PropertyInfo property in propertys) { property.SetValue(model, dr[i], null); i++; } 而且这里面就3条数据.每天会执行上千次都不会出问题.但是一但这里出问题.整个系统就不能使用了.只能重启IIS,而且伴随着各种怨念的其它异常,比如数据库中的字断无法找到之类的就出来了,但重启IIS后又能管很多天.这个代码从事件日志中是第一个出现.如果不出现这个异常,系统不会出问题.
cheng2005 2013-07-09
  • 打赏
  • 举报
回复
你确定自己知道什么叫做类型转换吗?
string Name;
int i = 10;
Name = i;
你确定不报错?
jruinet 2013-07-09
  • 打赏
  • 举报
回复
类型“System.Int64”的对象无法转换为类型“System.String”。 无论我int类型的值为什么,转为string应该不会出现问题吧.而且所有数据都不会为空的.在数据库中都是有值的
cheng2005 2013-07-09
  • 打赏
  • 举报
回复
看这错误明显是类型不匹配,必然是代码或数据有问题。 如果你说应该不是代码或数据的问题,那我推荐你去烧烧香求神仙来帮你解决。
资源地址: 中文1 http://download.csdn.net/source/1922034 中文2 http://download.csdn.net/source/1922079 中文3 http://download.csdn.net/source/1922197 中文4 http://download.csdn.net/source/1922298 中文5 http://download.csdn.net/source/1924370 中文6 http://download.csdn.net/source/1924437 英文1 http://download.csdn.net/source/1892113 英文2 http://download.csdn.net/source/1892112 《Pro C# 2010 and the .NET 4.0 Platform, Fifth Edition》已经出版http://www.apress.com/book/view/9781430225492 大家快去订购吧 amazon有折扣 http://www.amazon.com/Pro-2010-NET-Platform-Fifth/dp/1430225491/ref=sr_1_1?ie=UTF8&s=books&qid=1261446530&sr=8-1 C#与.NET3.5高级程序设计(第4版) 中文 其他网友本资源我下了,都没有下载下来 本人从其他地方找的 然后按章压缩 请大家试一下能不能下载 第1章 NET之道 2 1.1 NET之前的世界 2 1.2 NET解决方案 4 1.3 NET平台构造块(CLR、CTS和CLS)简介 5 1.4 其他支持.NET的编程语言 7 1.5 NET程序集概览 8 1.6 CTS 13 1.7 CLS 16 1.8 CLR 17 1.9 程序集/命名空间/类型的区别 19 1.10 使用ildasm.exe探索程序集 23 1.11 使用Lutz Roeder的Reflector来查看程序集 24 1.12 部署.NET运行库 25 1.13 NET的平台无关性 25 1.14 小结 26 第2章 构建C#应用程序 27 2.1 NET Framework 3.5 SDK的作用 27 2.2 用csc.exe构建C#应用程序 28 2.3 使用TextPad构建.NET应用程序 32 2.4 使用Notepad++构建.NET应用程序 35 2.5 使用SharpDevelop构建.NET应用程序 37 2.6 使用Visual C# 2008 Express构建.NET应用程序 38 2.7 使用Visual Studio 2008构建.NET应用程序 40 2.8 其他.NET开发工具 49 2.9 小结 50 第二部分 C#核心编程结构 第3章 C#核心编程结构Ⅰ 52 3.1 一个简单的C#程序 52 3.2 有趣的题外话:System.Environment类的其他成员 57 3.3 System.Console类 58 3.4 系统数据类型和C#简化符号 61 3.5 System.String数据类型 67 3.6 窄化和宽化数据类型转换 73 3.7 C#迭代结构 78 3.8 条件结构和关系/相等运算符 79 3.9 小结 81 第4章 C#核心编程结构Ⅱ 82 4.1 方法和参数修饰符 82 4.2 成员重载 86 4.3 C#中的数组操作 88 4.4 枚举类型 93 4.5 结构类型 97 4.6 值类型和引用类型 99 4.7 值类型和引用类型:最后的细节 105 4.8 C#可空类型 106 4.9 小结 108 第5章 定义封装的类类型 109 5.1 C#类类型 109 5.2 类构造函数 111 5.3 this关键字的作用 114 5.4 static关键字 118 5.5 定义OOP的支柱 124 5.6 C#访问修饰符 127 5.7 第一个支柱:C#的封装支持 129 5.8 常量数据 136 5.9 只读字段 137 5.10 C#的分部类型 138 5.11 通过XML生成C#源代码的文档 139 5.12 查看劳动成果 143 5.13 小结 144 第6章 继承和多态 145 6.1 继承的基本机制 145 6.2 回顾Visual Studio类关系图 148 6.3 第二个支柱:继承 149 6.4 包含/委托编程 154 6.5 第三个支柱:C#的多态支持 156 6.6 基类/派生类的转换规则 166 6.7 超级父类:System.Object 168 6.8 小结 173 第7章 结构化异常处理 174 7.1 错误、bug与异常 174 7.2 NET异常处理的作用 174 7.3 最简单的例子 176 7.4 配置异常的状态 180 7.5 系统级异常(System.SystemException) 183 7.6 应用程序级异常(System.ApplicationException) 184 7.7 处理多个异常 188 7.8 finally块 191 7.9 谁在引发什么异常 192 7.10 未处理异常的后果 193 7.11 使用Visual Studio调试未处理的异常 193 7.12 小结 194 虽然法律没有具体规定不可上传出版物电子版,如侵犯您的利益,请与本人或管理员联系删除资源;纸质版读起来更舒服,请购买正版图书

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧