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