Допустим, мне нужно и перечисление как во флаге, так и в варианте без флага.
Вариант 1: я мог продублировать все:
enum Color { Red, Blue, Green }
[Flags]
enum Colors {
None = 0,
Red = 1,
Blue = 2,
Green = 4
}
// use cases
Color currentColor;
Colors supportedColors;
Вариант 2: я мог бы просто использовать вариант Flags для всего:
Colors currentColor; // ugly, since neither "None" nor "Red | Blue" should be valid
Мне не нравится ни один из них: в варианте 1 Color.Red
и Colors.Red
совершенно не связаны, что может потребовать связующего кода. Кроме того, мне нужно будет синхронизировать два перечисления. Недостаток варианта 2 очевиден. На самом деле мне бы хотелось что-то вроде
enum Colors = Flag set of Color;
Есть ли более изящное решение этого требования?