Предполагая, что вы действительно хотите перечисление "flags", нет никакого автоматизированного способа сделать это, нет. Пример Pet
не очень подходит для флагов, но я предполагаю, что это просто неудачный выбор примера. Один вариант, который уменьшает вероятность ошибки немного , заключается в использовании битовых операций:
[Flags]
public enum Pet {
None = 0,
Dog = 1 << 0,
Cat = 1 << 1,
Bird = 1 << 2,
Rabbit = 1 << 3,
Other = 1 << 4
}
Если все использует сдвиг битов, вы знаете, что случайно не получите значение, которое на самом деле является несколькими битами.