从实例获取枚举值的数量

时间:2015-12-07 16:23:27

标签: c# enums propertyinfo

我试图遍历对象中的所有枚举,并且对于每个枚举,我需要获取其特定类型的值的数量。到目前为止,我有以下代码:

var enumProps = testObj.GetType().GetProperties().Where(p => p.PropertyType.IsEnum);

foreach (var prop in enumProps)
{
       var propType = prop.GetType(); 

       var valueCount = Enum.GetValues(typeof(propType)).Length; // <-- error

}

问题是当我将propType传递给typeof时,我收到以下错误:

  

propType是一个变量,但用作类型。

任何人都可以看到我在哪里出错?

1 个答案:

答案 0 :(得分:4)

GetType生成prop类型,它是固定的(即PropertyInfo反射类)。您需要使用PropertyType成员,如下所示:

foreach (var prop in enumProps) {
       var propType = prop.PropertyType; 
       var valueCount = Enum.GetValues(propType).Length;
}

Demo.

请注意,typeof运算符不是必需的,因为propType已经是您需要的System.Type