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

时间:2011-09-08 11:02:05

标签: c# generics type-constraints

  

可能重复:
  Create Generic method constraining T to an Enum

给定一个只对枚举值进行操作的通用方法

static void <T> method(T enum) where T ?????
{
     // do something with enum...
}

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

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

即便如此,它也不会接受可以为空的枚举,因为可以为空的枚举不是枚举。