我试图遍历对象中的所有枚举,并且对于每个枚举,我需要获取其特定类型的值的数量。到目前为止,我有以下代码:
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是一个变量,但用作类型。
任何人都可以看到我在哪里出错?
答案 0 :(得分:4)
GetType
生成prop
类型,它是固定的(即PropertyInfo
反射类)。您需要使用PropertyType
成员,如下所示:
foreach (var prop in enumProps) {
var propType = prop.PropertyType;
var valueCount = Enum.GetValues(propType).Length;
}
请注意,typeof
运算符不是必需的,因为propType
已经是您需要的System.Type
。