【发布时间】:2011-12-15 18:45:43
【问题描述】:
我正在尝试创建一种方法来枚举任何 enum,方法是返回一个包含每个常量名称和值的列表。
这是我的代码:
Type enumType = typeof(SomeEnum);
var enumConstants =
Enum.GetValues(enumType).
Cast<enumType>().
Select(x => new { Value = (int) x, Name = x.ToString() });
(我在这个 sn-p 中声明了enumType,但实际上它在我的方法签名中声明为MyMethod(Type enumType)。我没有显示我的方法签名,因为这需要引入一些 struct 我正在使用,与这里的问题无关)
问题是这段代码无法编译,我在Cast<enumType>(). 行出现以下错误:
找不到类型或命名空间名称“enumType”(您是否缺少 using 指令或程序集引用?)
我不明白enumType怎么会是未知的,我刚刚在上一行声明了!
请注意,Enum.GetValues(enumType). 行上没有错误标记。
我在这里遗漏了什么吗?是不是有一些 LINQ 耍花招?
【问题讨论】:
-
泛型类型参数必须是
T,而不是typeof(T)。