我有一个通用类Foo<T>
,我希望将T
限制为enum
类型。这可能在 C#吗?
我试过了
public class Foo<T> where T : enum // COMPILATION ERROR
但这种方法似乎只适用于class
和struct
。
同样,尝试将T
限制为基础enum
类型也不起作用:
public class Foo<T> where T : int // COMPILATION ERROR
因为int
不是类或接口。
编辑我现在意识到之前发布了类似的问题,最终可以删除此问题。与我的问题更相关的一个问题是this,其中包含的答案如下所示。
2018年9月13日更新在最新的次要C#版本7.3中,现在可以将通用类型约束为Enum
。有关详细信息,请参阅here。
答案 0 :(得分:6)
这在C#规范和实现中无效,但IL中的是。
Jon Skeet建立了一个图书馆来解决这个名为Unconstrained Melody的问题:https://code.google.com/p/unconstrained-melody/
虽然我从未使用它,但我无法提供任何有关如何利用它的见解。