C#如何通过对象属性名修改值的实例


当前第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

            {                //泛型Nullable<>

                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》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...