EDITAR: Agora está disponível na versão 0.0.0.2 do UnconstrainedMelody.
(Conforme solicitado em minha postagem do blog sobre restrições de enum . Incluí os fatos básicos abaixo para obter uma resposta autônoma.)
A melhor solução é esperar que eu inclua no UnconstrainedMelody 1 . Esta é uma biblioteca que usa código C # com restrições "falsas", como
where T : struct, IEnumConstraint
e o transforma em
where T : struct, System.Enum
por meio de uma etapa de postbuild.
Não deve ser muito difícil de escrever IsSet
... embora atender às bandeiras baseadas Int64
e UInt64
baseadas em ambos possa ser a parte complicada. (Sinto o cheiro de alguns métodos auxiliares chegando, basicamente me permitindo tratar qualquer enum sinalizador como se ele tivesse um tipo base de UInt64
.)
Qual você gostaria que fosse o comportamento se ligasse
tester.IsSet(MyFlags.A | MyFlags.C)
? Ele deve verificar se todos os sinalizadores especificados estão definidos? Essa seria a minha expectativa.
Vou tentar fazer isso no caminho para casa esta noite ... Espero ter uma rápida blitz sobre métodos de enum úteis para colocar a biblioteca em um padrão utilizável rapidamente e, em seguida, relaxar um pouco.
EDIT: Não tenho certeza sobre IsSet
como um nome, a propósito. Opções:
- Inclui
- Contém
- HasFlag (ou HasFlags)
- IsSet (certamente é uma opção)
Os pensamentos são bem-vindos. Tenho certeza de que vai demorar um pouco antes de qualquer coisa ser gravada em pedra de qualquer maneira ...
1 ou enviá-lo como um patch, é claro ...