当前位置:  开发笔记 > 编程语言 > 正文

带反射的.NET动态对象

如何解决《带反射的.NET动态对象》经验,为你挑选了1个好方法。

如何通过反射确定a Nullable(of Enum)是否确实是一个Enum

我正在使用一种方法,该方法T使用IDataReader从数据库调用中检索的类型动态填充类型的对象.从本质上讲,它循环遍历datareader的序数,并且所有属性T和填充与序数名称匹配的属性(也会抛出一些属性魔法来更改列名称).在其他任何情况下,它都很有效,但是当我检查属性的时候BaseType,System.Enum我找到了,System.ValueType 因此,我的枚举检查失败了,方法就会爆炸.

[编辑: Type.IsEnum我的工作方式不起作用.这里的主要问题是,TBaseType层次结构中没有任何内容表明它是一个Enum.这就好像使它成为一种Nullable类型会丧失我的Enum权利.]

有任何想法吗?



1> OregonGhost..:

这有点麻烦:

从中获取类型 PropertyInfo.PropertyType

测试 IsGenericType

如果是,请获取泛型类型 GetGenericTypeDefinition()

如果该类型等于typeof(Nullable<>),则您具有Nullable

获取底层(即Enum)类型Nullable.GetUnderlyingType(propertyInfo.PropertyType)

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有