将枚举值作为参数的通用C#方法

将枚举值作为参数的通用C#方法,c#,generics,type-constraints,C#,Generics,Type Constraints,可能重复: 给定一个仅对枚举值进行操作的泛型方法 static void <T> method(T enum) where T ????? { // do something with enum... } 静态无效方法(T enum),其中T????? { //对枚举执行某些操作。。。 } 如何约束T,以便只接受枚举值?我尝试过使用struct,但是这不允许使用可为空的枚举类型调用我的方法。枚举类型的通用约束在C#中是不可能的,但在IL中是可能的。看看Jon Skee

可能重复:

给定一个仅对枚举值进行操作的泛型方法

static void <T> method(T enum) where T ?????
{
     // do something with enum...
}
静态无效方法(T enum),其中T?????
{
//对枚举执行某些操作。。。
}

如何约束
T
,以便只接受枚举值?我尝试过使用
struct
,但是这不允许使用可为空的枚举类型调用我的方法。

枚举类型的通用约束在C#中是不可能的,但在IL中是可能的。看看Jon Skeet的项目,它将允许您将泛型方法限制为枚举。

在C中,您不能。出于某种原因,我不知道C#规范明确禁止将
System.Enum
作为约束


即使这样,它也不会接受可空枚举,因为可空枚举不是枚举

这是一个如何使用IL而不是库来实现这一点的示例,让您自己实现这一点,但仍然非常有趣!