我想做的是返回所选标志枚举聚合的通用方法。我期望的结果是MyEnum.A | MyEnum.C(5)。
代码我看起来像这样:
public class TestClass
{
[Flags]
public enum MyEnum : byte
{
None = 0,
A = 1,
B = 2,
C = 4
}
public void TestMethod()
{
MyEnum[] selectedItems = { MyEnum.A, MyEnum.C };
MyEnum aggregatedResult = SelectedItems.GetSelected();
}
}
public static class Extensions
{
public static T GetSelected<T>(this T[] self) where T : System.Enum
{
return self.Aggregate(default(T), (current, p) => current | p);
}
}
但是它不会编译,因为:
Operator '|' cannot be applied to operands of type 'T' and 'T'.
我需要使用哪种约束来实现这一目标?可能吗。我找不到关于这个主题的任何东西。