当前第2页 返回上一页
不知道大家有没有注意,我在第三种情况强调了非泛型,难道泛型就不行了吗?
是的。如果只是用Convert.ChangeType()方法,类型转换仍然报错,先看下面的代码。
即使目标类型和值的类型是一致,通过Convert.ChangeType()进行转换仍然报错。
解决这个问题,就要先把属性值类型转成基类型后,在进行Convert转换。看代码这样,在使用Convert.ChangeType()转换可空类型时,就不会报错了。
再增加一些基础的判断验证,代码就比较完善了。
1 2 3 4 5 6 7 8 9 10 11 | if (!property.PropertyType.IsGenericType)
{
property.SetValue(obj, string .IsNullOrEmpty(value) ? null : Convert.ChangeType(value, property.PropertyType), null );
} else
{
Type genericTypeDefinition = property.PropertyType.GetGenericTypeDefinition();
if (genericTypeDefinition == typeof (Nullable<>))
{
property.SetValue(obj, string .IsNullOrEmpty(value) ? null : Convert.ChangeType(value, Nullable.GetUnderlyingType(property.PropertyType)), null );
}
}
|
以上就是C#如何通过对象属性名修改值的实例的详细内容!
返回前面的内容
相关阅读 >>
.net core创建一个控制台(console)程序
.net 玩单反的技巧
在.net中所有类的基类是什么?
oracle clob字段过长保存出错改如何解决?
c#如何在图片增加文字的示例代码分享
c#连接oracle的实例教程
c#中.net框架的简介
c#中匿名对象与var以及动态类型 dynamic的详解
c#编程如何获取电脑硬件信息的方法?
c#中实现复制与删除文件的方法
更多相关阅读请进入《csharp》频道 >>
清华大学出版社
作者:[美]克里斯琴·内格尔(Christian Nagel)著。出版时间:2019年3月。
转载请注明出处:木庄网络博客 » C#如何通过对象属性名修改值的实例