Quale è la best practice attualmente accettata in termini di utilizzo enum di C #, un Enum bitwise [Flags] (confrontato usando | and &) o un IEnumerable di valori enum? Sto pensando sia da una prospettiva di concisione del codice che da una prospettiva di manutenzione.
L'unico svantaggio nell'usare l'approccio Flags che posso pensare è l'incapacità di enumerare i valori senza fare l'enumerazione inversa:
var possibleValues = Enum.GetValues(typeof(MyEnum)).Cast<MyEnum>();
var applicableValues = possibleValues.Where(x => (containerClass.EnumProperty & x) == x);
Mentre ovviamente l'IEnumerable è più facile da interrogare.
EDIT:
Poiché svick ha giustamente sottolineato, l'IEnumerable potrebbe essere la raccolta errata da utilizzare, un ISet potrebbe essere un esempio migliore.