gpt4 book ai didi

c# - 带有 Type 变量的 Cast()

转载 作者:太空狗 更新时间:2023-10-29 17:42:23 26 4
gpt4 key购买 nike

我正在尝试创建一个方法来枚举任何枚举,方法是返回一个包含每个常量名称和值的列表。

这是我的代码:

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>().行以下错误:

The type or namespace name 'enumType' could not be found (are you missing a using directive or an assembly reference?)

我不明白怎么能enumType未知,我只是在上一行声明了它!

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

我是不是漏掉了什么? LINQ 是不是在耍花招?

最佳答案

泛型不允许您传递变量的实例,您需要使用 Cast<SomeEnum>() ,或者使此代码所在的方法通用,并使用类似 Cast<T>() 的方法.

关于c# - 带有 Type 变量的 Cast<T>(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8525034/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com