可空类型的转换问题(?|nullable)

来源:互联网 发布:买淘宝店铺安全吗 编辑:程序博客网 时间:2024/05/16 06:58

近日在利用反射机制编写的一个页面的控件数据自动获取与封装的工具类时,遇到了 “nullable的类型不能转换”的问题。原来的MODEL字段没有可空类型的,所以也一直没出问题,现在的MODEL字段中有几个属性是?可空类型。

 

1:
成员变量
decimal Id {get; set;}
下面的处理没有问题:
Convert.changeType("12", p.PropetyType);

 

2:
成员变量
decimal? Id {get; set;}
相同的处理就会有问题:
Convert.changeType("12", p.PropetyType);
执行的时候,总是提示nullable的类型不能转换。对于nullable的类型,取得对应的类型是不是有什么特殊的处理。

 

查问了资料,得知目前Convert.ChangeType要求目标类型必须是IConvertible。 虽然decimal实现了IConvertible,但Nullable <decimal>却没有实现。

 

正确的处理方法应该是:

 

 

 

现将自己写的封装方法共享一下:^_^