使用“ |”通用方法中的运算符

时间:2019-06-14 07:50:53

标签: c# generics enums constraints flags

我想做的是返回所选标志枚举聚合的通用方法。我期望的结果是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'.

我需要使用哪种约束来实现这一目标?可能吗。我找不到关于这个主题的任何东西。

0 个答案:

没有答案