РЕДАКТИРОВАТЬ: Это теперь живое в версии 0.0.0.2 UnconstrainedMelody.
(В соответствии с просьбой в моем блоге об ограничениях enum . Ниже приведены основные факты для самостоятельного ответа.)
Лучшее решение - подождать, пока я включу его в UnconstrainedMelody 1 . Это библиотека, которая принимает код C # с «поддельными» ограничениями, такими как
where T : struct, IEnumConstraint
и превращает его в
where T : struct, System.Enum
через шаг пост-сборки.
Не должно быть слишком сложно написать IsSet
... хотя удовлетворение флагов, основанных как на Int64
, так и на UInt64
, может оказаться сложной задачей. (Я чувствую, как появляются некоторые вспомогательные методы, в основном позволяющие мне обрабатывать любые перечисления флагов, как если бы они имели базовый тип UInt64
.)
Как бы вы хотели, чтобы было поведение, если бы вы позвонили
tester.IsSet(MyFlags.A | MyFlags.C)
? Следует ли проверить, что все заданные флаги установлены? Это было бы моим ожиданием.
Я попытаюсь сделать это сегодня вечером по дороге домой ... Я надеюсь кратко рассказать о полезных методах enum, чтобы быстро привести библиотеку к пригодному для использования стандарту, а затем немного расслабиться.
РЕДАКТИРОВАТЬ: Я не уверен насчет IsSet
как имя, кстати. Опции:
- Включает
- Содержит
- HasFlag (или HasFlags)
- IsSet (это, конечно, вариант)
Мысли приветствуются. Я уверен, что пройдет какое-то время, прежде чем что-то будет в камне ...
1 или отправьте его как патч, конечно ...