Я знаю, что у вас уже есть приемлемый ответ на ваш вопрос, но я бы все же предпочел что-то подобное в вашем enum
:
public enum GBFEvents
{
NONE = 0,
InitGBFSQL = 1 << 0,
ServiceIISControlDown = 1 << 1,
SetWebConfigValues = 1 << 2,
ReadFilelists = 1 << 3,
CopyFiles = 1 << 4,
FixWebConfigValues = 1 << 5,
BuildAppPaths = 1 << 6,
PerformDatabaseUpdate = 1 << 7,
ServiceIISControlUp = 1 << 8,
/* Helpers */
AllDBEvents = InitGBFSQL | PerformDatabaseUpdate,
AllServiceEvents = ServiceIISControlDown | ServiceIISControlUp,
AllConfigEvents = SetWebConfigValues | FixWebConfigValues,
AllFileEvents = ReadFilelists | CopyFiles | BuildAppPaths,
All = AllDBEvents | AllServiceEvents | AllConfigEvents | AllFileEvents
}
(могунеправильно описал BuildAppPaths
, вы можете считать его более Config
связанным, в качестве примера)
И тогда ваш код будет выглядеть так:
eventFlags = AllServiceEvents | AllConfigEvents | AllFileEvents;
(И другой путь будет простоuse AllDbEvents
)
Для меня это становится понятнее при чтении того, что «Копировать только файлы» - это не просто копирование файлов, в то время как не нужно иметь тонны опций |
в одной строке.И эти вспомогательные значения в вашем enum
могут быть повторно использованы и в других областях.
Основная идея состоит в том, чтобы сделать «именованные группы» событий явными в вашем перечислении, вместо того, чтобы корректно объединять их в других частяхвашего кода.