Допустим, у меня есть следующее перечисление:
[Flags]
public enum SomeType
{
Val1 = 0,
Val2 = 1,
Val3 = 2,
Val4 = 4,
Val5 = 8,
Val6 = 16,
All = Val1 | Val2 | Val3 | Val4 | Val5 | Val6
}
и некоторые переменные:
SomeType easyType = SomeType.Val1 | SomeType.Val2;
SomeType complexType = SomeType.All;
Если я хочу просмотреть значения первого перечисления, я могу просто сделать:
foreach(string s in easyType.ToString().Split(','))
{ ... }
Однако, когда я пытаюсь применить тот же подход к 'complexType', я получаю значение 'All', которое, конечно, допустимо, потому что это также одно из возможных значений перечисления.Но есть ли хороший способ на самом деле увидеть, из каких значений создан SomeType.All?Я знаю, что мог бы сделать ручной цикл по всем значениям, подобным этому:
if(complexType.HasFlag(ManualType.Val1) && ...