从实例中获取枚举值的数量
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;
}
请注意,typeof
运算符不是必需的,因为 propType
已经是您需要的 System.Type
。
我试图遍历对象中的所有枚举,对于每个枚举,我需要获取其特定类型的值的数量。到目前为止,我有以下代码:
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;
}
请注意,typeof
运算符不是必需的,因为 propType
已经是您需要的 System.Type
。