I недавно спросил о чем-то подобном.
Если вы используете флаги, вы можете добавить метод расширения в перечисления, чтобы облегчить проверку содержащихся флагов (см. сообщение для подробностей)
Это позволяет:
[Flags]
public enum PossibleOptions : byte
{
None = 0,
OptionOne = 1,
OptionTwo = 2,
OptionThree = 4,
OptionFour = 8,
//combinations can be in the enum too
OptionOneAndTwo = OptionOne | OptionTwo,
OptionOneTwoAndThree = OptionOne | OptionTwo | OptionThree,
...
}
Тогда вы можете сделать:
PossibleOptions opt = PossibleOptions.OptionOneTwoAndThree
if( opt.IsSet( PossibleOptions.OptionOne ) ) {
//optionOne is one of those set
}
Мне это легче читать, чем большинство способов проверки включены флаги.