给定一个只对枚举值进行操作的通用方法
static void <T> method(T enum) where T ?????
{
// do something with enum...
}
如何约束T
以便只接受枚举值?我已经尝试使用struct
但是这不允许使用可枚举的枚举类型调用我的方法。
答案 0 :(得分:4)
对于枚举类型的通用约束在C#中是不可能的,但在IL中是可能的。看看Jon Skeet的项目Unconstrained Melody,它将允许您将通用方法约束为枚举。
答案 1 :(得分:2)
在C#中你不能。出于某种原因,我不明白C#规范明确禁止System.Enum
作为约束。
即便如此,它也不会接受可以为空的枚举,因为可以为空的枚举不是枚举。