РЕДАГУВАТИ: Це зараз працює у версії 0.0.0.2 UnconstrainedMelody.
(Як вимагається у моєму дописі в блозі про обмеження переліку. Для окремої відповіді я включив основні факти нижче).
Найкраще рішення - почекати, поки я включу його до UnconstrainedMelody 1 . Це бібліотека, яка приймає код C # з "фальшивими" обмеженнями, такими як
where T : struct, IEnumConstraint
і перетворює його на
where T : struct, System.Enum
через крок після побудови.
Це не повинно бути надто складно писати IsSet
... хоча обслуговування обох прапорів як на Int64
базі, так і на UInt64
базі може бути складною частиною. (Я відчуваю запах деяких допоміжних методів, які в основному дозволяють мені обробляти будь-які прапорці enum так, ніби він має базовий тип UInt64
.)
Якою б ви хотіли, щоб поведінка була, якщо ви телефонували
tester.IsSet(MyFlags.A | MyFlags.C)
? Чи слід перевіряти, що встановлені всі вказані прапори? Це було б моє сподівання.
Я спробую зробити це по дорозі додому сьогодні ввечері ... Я сподіваюся швидко проаналізувати корисні методи перерахування, щоб швидко довести бібліотеку до придатного для використання стандарту, а потім трохи відпочити.
EDIT: IsSet
До речі, я не впевнений , що це ім’я. Варіанти:
- Включає
- Містить
- HasFlag (або HasFlags)
- IsSet (це, звичайно, варіант)
Думки вітаються. Я впевнений, що все одно щось в кам’яному положенні пройде деякий час ...
1 або надішліть його як патч, звичайно ...