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



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

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

相关内容

  • 没有找到相关文章

最新更新