How do I determine if an Enum value has one or more of the values it's being compared with?

后端 未结 8 1577
死守一世寂寞
死守一世寂寞 2021-01-04 07:53

I\'ve got an Enum marked with the [Flags] attribute as follows:

[Flags]
public enum Tag : int
{
    None = 0,
    PrimaryNav = 1,
    HideChildPages = 2,
            


        
8条回答
  •  挽巷
    挽巷 (楼主)
    2021-01-04 08:07

    You can use this extension method on enum, for any type of enums:

    public static bool IsSingle(this Enum value)
        {
            var items = Enum.GetValues(value.GetType());
            var counter = 0;
            foreach (var item in items)
            {
                if (value.HasFlag((Enum)item))
                {
                    counter++;
                }
                if (counter > 1)
                {
                    return false;
                }
            }
            return true;
        }
    

提交回复
热议问题