Switch on Enum (with Flags attribute) without declaring every possible combination?

后端 未结 9 2130
忘掉有多难
忘掉有多难 2021-01-31 14:15

how do i switch on an enum which have the flags attribute set (or more precisely is used for bit operations) ?

I want to be able to hit all cases in a switch that matche

9条回答
  •  误落风尘
    2021-01-31 14:39

    What about a Dictionary that you will fill like

    dict.Add(CheckType.Form, DoSomething);
    dict.Add(CheckType.TempDate, DoSomethingElse);
    ...
    

    a decomposition of your value

    flags = Enum.GetValues(typeof(CheckType)).Where(e => (value & (CheckType)e) == (CheckType)e).Cast();
    

    and then

    foreach (var flag in flags)
    {
       if (dict.ContainsKey(flag)) dict[flag]();
    }
    

    (code untested)

提交回复
热议问题