带反射的.NET动态对象

Wes*_*s P 1 .net reflection enums nullable

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

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

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

有任何想法吗?

Ore*_*ost 7

这有点麻烦:

  • 从中获取类型 PropertyInfo.PropertyType
  • 测试 IsGenericType
  • 如果是,请获取泛型类型 GetGenericTypeDefinition()
  • 如果该类型等于typeof(Nullable<>),则您具有Nullable
  • 获取底层(即Enum)类型Nullable.GetUnderlyingType(propertyInfo.PropertyType)