从实例中获取枚举值的数量

Get number of enum values from instance

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

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 is a variable but used as a type.

有人看到我哪里错了吗?

GetType 产生固定的 prop 类型(即 PropertyInfo 反射 class)。你需要使用 PropertyType 成员,像这样:

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

Demo.

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