当前第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使用cache框架如何给程序添加cache的实例
c#中关于静态与非静态方法的区别介绍
asp .net 面试题及答案分享
c#与.net框架之间的关系是什么?c#程序的开发工具
c#怎么将 html转换为图片或 pdf?
.net的错误处理机制是什么
.net安装framework出现报错的处理教程
.net实现后台登录验证
c#如何生成二维码的示例分享
.net 打开文件
更多相关阅读请进入《csharp》频道 >>
清华大学出版社
作者:[美]克里斯琴·内格尔(Christian Nagel)著。出版时间:2019年3月。
转载请注明出处:木庄网络博客 » C#如何通过对象属性名修改值的实例