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

本文关键字:枚举 实例 获取 | 更新日期: 2023-09-27 18:25:56

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

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是一个变量,但用作类型。

有人看到我哪里错了吗?

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

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

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

演示。

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