EDITAR: Esto ahora está disponible en la versión 0.0.0.2 de UnconstrainedMelody.
(Como se solicitó en la publicación de mi blog sobre las restricciones de enumeración . He incluido los datos básicos a continuación en aras de una respuesta independiente).
La mejor solución es esperar a que lo incluya en UnconstrainedMelody 1 . Esta es una biblioteca que toma código C # con restricciones "falsas" como
where T : struct, IEnumConstraint
y lo convierte en
where T : struct, System.Enum
a través de un paso posterior a la construcción.
No debería ser demasiado difícil de escribir IsSet
... aunque atender tanto a las banderas Int64
basadas como a las UInt64
basadas en banderas podría ser la parte complicada. (Huelo algunos métodos de ayuda que se acercan, básicamente me permiten tratar cualquier enumeración de banderas como si tuviera un tipo base de UInt64
).
¿Cuál le gustaría que fuera el comportamiento si llamara
tester.IsSet(MyFlags.A | MyFlags.C)
? ¿Debería comprobar que todas las banderas especificadas están configuradas? Esa sería mi expectativa.
Trataré de hacer esto en el camino a casa esta noche ... Espero tener un bombardeo rápido sobre métodos de enumeración útiles para que la biblioteca alcance un estándar utilizable rápidamente, luego relajarme un poco.
EDITAR: No estoy seguro IsSet
como nombre, por cierto. Opciones:
- Incluye
- Contiene
- HasFlag (o HasFlags)
- IsSet (ciertamente es una opción)
Los pensamientos son bienvenidos. Estoy seguro de que pasará un tiempo antes de que algo quede grabado en piedra de todos modos ...
1 o enviarlo como parche, por supuesto ...