我正在尝试通过返回包含每个常量名称和值的列表来制作一种枚举任何枚举的方法。

这是我的代码:

Type enumType = typeof(SomeEnum);
var enumConstants =
    Enum.GetValues(enumType).
         Cast<enumType>().
         Select(x => new { Value = (int) x, Name = x.ToString() });

(我在此代码段中声明了enumType,但实际上在我的方法签名中已将其声明为MyMethod(Type enumType)。我没有显示我的方法签名,因为这将需要介绍我正在使用的某些结构,这与此处的问题无关)

问题是此代码无法编译,并且在Cast<enumType>().行上出现以下错误:



我不知道enumType是如何未知的,我只是在上一行中声明了它!

请注意,在Enum.GetValues(enumType).行上,没有错误标记。

我在这里想念什么吗? LINQ玩花样吗?

最佳答案

泛型不允许您传递变量的实例,您将需要使用Cast<SomeEnum>()或使该代码位于泛型的方法,并使用类似Cast<T>()的方法。

10-01 20:08