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 core创建一个控制台(console)程序

.net 玩单反的技巧

在.net中所有类的基类是什么?

oracle clob字段过长保存出错改如何解决?

c#如何在图片增加文字的示例代码分享

c#连接oracle的实例教程

c#中.net框架的简介

c#中匿名对象与var以及动态类型 dynamic的详解

c#编程如何获取电脑硬件信息的方法?

c#中实现复制与删除文件的方法

更多相关阅读请进入《csharp》频道 >>




打赏

取消

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

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

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

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

评论

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