如何通过反射确定a Nullable(of Enum)
是否确实是一个Enum
?
我正在使用一种方法,该方法T
使用IDataReader
从数据库调用中检索的类型动态填充类型的对象.从本质上讲,它循环遍历datareader的序数,并且所有属性T
和填充与序数名称匹配的属性(也会抛出一些属性魔法来更改列名称).在其他任何情况下,它都很有效,但是当我检查属性的时候BaseType
,System.Enum
我找到了,System.ValueType
因此,我的枚举检查失败了,方法就会爆炸.
[编辑:
Type.IsEnum
我的工作方式不起作用.这里的主要问题是,T
BaseType层次结构中没有任何内容表明它是一个Enum
.这就好像使它成为一种Nullable
类型会丧失我的Enum
权利.]
有任何想法吗?
这有点麻烦:
从中获取类型 PropertyInfo.PropertyType
测试 IsGenericType
如果是,请获取泛型类型 GetGenericTypeDefinition()
如果该类型等于typeof(Nullable<>)
,则您具有Nullable
获取底层(即Enum
)类型Nullable.GetUnderlyingType(propertyInfo.PropertyType)