EDIT: Ceci est maintenant en ligne dans la version 0.0.0.2 de UnconstrainedMelody.
(Comme demandé sur mon article de blog sur les contraintes d'énumération . J'ai inclus les faits de base ci-dessous pour une réponse autonome.)
La meilleure solution est d'attendre que je l'inclue dans UnconstrainedMelody 1 . Il s'agit d'une bibliothèque qui prend du code C # avec de "fausses" contraintes telles que
where T : struct, IEnumConstraint
et le transforme en
where T : struct, System.Enum
via une étape de post-construction.
Il ne devrait pas être trop difficile à écrire IsSet... même si la restauration pour les deux à Int64base et des UInt64drapeaux à base pourrait être la partie la plus délicate. (Je sens certaines méthodes d'aide arriver, ce qui me permet essentiellement de traiter toutes les énumérations d'indicateurs comme si elles avaient un type de base UInt64.)
Quel serait votre comportement si vous appeliez
tester.IsSet(MyFlags.A | MyFlags.C)
? Doit-il vérifier que tous les indicateurs spécifiés sont définis? Ce serait mon attente.
J'essaierai de le faire sur le chemin du retour ce soir ... J'espère avoir un éclair rapide sur les méthodes d'énumération utiles pour que la bibliothèque atteigne rapidement une norme utilisable, puis me détendre un peu.
EDIT: Je ne suis pas sûr du IsSetnom, au fait. Options:
- Comprend
- Contient
- HasFlag (ou HasFlags)
- IsSet (c'est certainement une option)
Les pensées sont les bienvenues. Je suis sûr que cela prendra du temps avant que quoi que ce soit ne soit gravé dans la pierre de toute façon
1 ou soumettez-le sous forme de patch, bien sûr ...