C# 反射给对象赋值遇到的问题——类型转换
2013-01-23 22:30
274 查看
反射给对象赋值遇到的问题——类型转换
发布时间:2012-10-25 10:49浏览次数:225给一个对象属性赋值可以通过PropertyInfo.SetValue()方式进行赋值,但要注意值的类型要与属性保持一致。
创建对象实例的两种方法:
1.
创建好实例时,现在可以给当前实例的某个属性赋值,首先获取要赋值的属性。
情况1,该属性类型是已知类型,例如:int
情况2,该属性类型是已知类型,原值是其他类型。例如:目标类型为int,值为string
情况3,该属性类型是未知非泛型类型,不确定目标类型,如何进行类型转换。
不知道大家有没有注意,我在第三种情况强调了非泛型,难道泛型就不行了吗?
是的。如果只是用Convert.ChangeType()方法,类型转换仍然报错,先看下面的代码。
即使目标类型和值的类型是一致,通过Convert.ChangeType()进行转换仍然报错。
解决这个问题,就要先把属性值类型转成基类型后,在进行Convert转换。看代码
这样,在使用Convert.ChangeType()转换可空类型时,就不会报错了。
再增加一些基础的判断验证,代码就比较完善了。
相关文章推荐
- C# 反射给对象赋值遇到的问题——类型转换
- [转]反射给对象赋值遇到的问题——类型转换
- C# 反射给对象属性赋值遇到的问题——类型转换
- 反射给对象赋值遇到的问题——类型转换
- C#对象赋值出现的诡异问题,或许你也遇到过,有待你的解决
- 反射给对象赋值遇到的问题——类型转换[转http://blog.csdn.net/xiaohan2826/article/details/8536074]
- [深入学习C#]利用反射给对象赋值
- 动态调用Web Service及C#反射返回类或List对象问题解决
- 使用C#的反射机制时遇到的问题
- C#从 DataTable 对象中删除 DataRow 对象 遇到的问题
- 子类new出来的实例赋值给父类对象,父类对象调用方法遇到的问题。
- 使用C#的反射机制时遇到的问题
- c# 利用反射动态给实体类对象赋值
- 使用C#的反射机制(AssemblyInfo)时遇到的问题
- c# net 使用反射为对象赋值
- 反射给对象赋值——类型转换
- C#通过反射给对象赋值
- 使用C#的反射机制时遇到的问题
- 动态调用Web Service及C#反射返回类或List对象问题解决
- c# 利用反射动态给实体类对象赋值