可以将泛型类型约束到枚举?

时间:2013-11-15 13:58:48

标签: c# generics enums

我有一个通用类Foo<T>,我希望将T限制为enum类型。这可能在 C#吗?

我试过了

public class Foo<T> where T : enum   // COMPILATION ERROR

但这种方法似乎只适用于classstruct

同样,尝试将T限制为基础enum类型也不起作用:

public class Foo<T> where T : int    // COMPILATION ERROR

因为int不是类或接口。


编辑我现在意识到之前发布了类似的问题,最终可以删除此问题。与我的问题更相关的一个问题是this,其中包含的答案如下所示。

2018年9月13日更新在最新的次要C#版本7.3中,现在可以将通用类型约束为Enum。有关详细信息,请参阅here

1 个答案:

答案 0 :(得分:6)

这在C#规范和实现中无效,但IL中的

Jon Skeet建立了一个图书馆来解决这个名为Unconstrained Melody的问题:

https://code.google.com/p/unconstrained-melody/

虽然我从未使用它,但我无法提供任何有关如何利用它的见解。