我想要做的是这样的事情: 我有带有组合标记值的枚举。
public static class EnumExtension
{
public static bool IsSet<T>( this T input, T matchTo )
where T:enum //the constraint I want that doesn't exist in C#3
{
return (input & matchTo) != 0;
}
}
然后我可以这样做:
MyEnum tester = MyEnum.FlagA | MyEnum.FlagB
if( tester.IsSet( MyEnum.FlagA ) )
//act on flag a
遗憾的是,C # 的一般性约束没有枚举限制,只有 class 和 struct。C # 不把枚举看作结构(即使它们是值类型) ,所以我不能像这样添加扩展类型。
有人知道解决办法吗?