EDIT: Acest lucru este live în versiunea 0.0.0.2 a aplicației UnconstrainedMelody.
(Așa cum am solicitat în post de blog despre enum constrângeri . Am inclus faptele de bază de mai jos pentru un răspuns independent.)
Cea mai bună soluție este să așteptați să o includ în UnconstrainedMelody 1 . Aceasta este o bibliotecă care ia codul C# cu constrângeri "false" cum ar fi
where T : struct, IEnumConstraint
și o transformă
where T : struct, System.Enum
printr-un pas postbuild.
Nu ar trebui să fie prea greu să scrieți IsSet
... deși alimentarea atît pentru codurile Int64
, cât și pentru UInt64
parte. (Mi se pare că mi-a venit câteva metode de ajutor, în principiu mi-a permis să tratez orice enum de steaguri ca și cum ar avea un tip de bază UInt64
).
Ce vrei să fie comportamentul dacă ai sunat
tester.IsSet(MyFlags.A | MyFlags.C)
? Ar trebui să verifice dacă toate sunt setate steagurile specificate? Asta ar fi așteptarea mea.
Voi incerca sa fac asta in drum spre casa in seara asta ... Sper sa fiu un blitz rapid pe metode utile enum pentru a obtine rapid biblioteca la un standard utilizabil, apoi relaxati-va un pic.
EDIT: Nu sunt sigur despre IsSet
ca un nume, apropo. Opțiuni:
- Include
- Conține
- HasFlag (sau HasFlags)
- IsSet (este cu siguranță o opțiune)
Gândurile sunt binevenite. Sunt sigur că va mai fi ceva timp înainte ca orice să fie pus în piatră oricum ...
1 or submit it as a patch, of course...