将枚举值作为参数的通用 C# 方法[重复]
Posted
技术标签:
【中文标题】将枚举值作为参数的通用 C# 方法[重复]【英文标题】:Generic C# method taking where the enum value as a parameter [duplicate] 【发布时间】:2011-09-08 11:02:05 【问题描述】:可能重复:Create Generic method constraining T to an Enum
给定一个只对枚举值进行操作的通用方法
static void <T> method(T enum) where T ?????
// do something with enum...
我如何限制 T
以便只接受枚举值?我试过使用struct
,但是这不允许使用可以为空的枚举类型调用我的方法。
【问题讨论】:
【参考方案1】:枚举类型的泛型约束在 C# 中是不可能的,但在 IL 中是可能的。看看 Jon Skeet 的项目,Unconstrained Melody,它将允许您将泛型方法限制为枚举。
【讨论】:
这是一个示例,说明如何使用 IL 而不是库来让您自己执行此操作,但同样非常有趣!【参考方案2】:在 C# 中你不能。出于某种原因,我不知道 C# 规范明确禁止 System.Enum
作为约束。
即使那样它也不会接受可为空的枚举,因为可为空的枚举不是枚举。
【讨论】:
以上是关于将枚举值作为参数的通用 C# 方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章