这个问题已经在这里有了答案 :
7年前关闭。
可能重复: 有人知道缺少枚举泛型约束的良好解决方法吗?
C#不允许在上进行类型约束的原因Enum是什么?我敢肯定,疯狂背后有一种方法,但是我想了解为什么这不可能。
Enum
下面是我想做的(理论上)。
public static T GetEnum<T>(this string description) where T : Enum { ... }
这是偶尔需要的功能。
正如我喜欢指出的那样,除非有人设计,规范,实施,测试,记录并发布该功能,否则所有功能都不会实现。到目前为止,还没有人为此做过。没有什么特别不寻常的原因;为什么?我们还有很多其他事情要做,预算有限,而且这从来没有超过“这不是很好吗?” 语言设计团队中的讨论。
CLR不支持它,因此为了使其工作,除了语言工作外,我们还需要进行运行时工作。 (请参阅答案评论)
我可以看到有一些不错的用例,但是它们都不是那么引人注目,以至于我们会做这项工作,而不是更频繁地要求使用的数百种其他功能之一,或者具有更引人注目的和更深远的影响使用案例。(如果我们要弄混这段代码,我个人会优先考虑委托约束的方式,远高于枚举约束的方式。)