J'ai un Enum, supposons que:Carte Enum [Flags] Enum
public enum ItemStatus {
Available, Unavailable
}
J'ai une méthode qui retourne une liste de ces téléviseurs, basée sur un filtre. Et un filtre est représenté par un Enum:
[Flags]
public enum ItemStatusFilter {
Available = 1, Unavailable = 2
}
Question: Quelle est une façon habile pour vérifier si par exemple donné des ItemStatus matches de donné instance de ItemStatusFilter?
Je n'aime pas l'idée d'assigner des valeurs aux membres ItemStatus (1,2) car elle n'est pas requise par cette énumération. À l'heure actuelle, mon code se présente comme suit:
public static bool Matches(this TagStatusFilter statusFilter, TagStatus status) {
if (status == TagStatus.Available && ((statusFilter & TagStatusFilter.Available) != 0)) return true;
if (status == TagStatus.Unavailable && ((statusFilter & TagStatusFilter.Unavailable) != 0)) return true;
return false;
}
Qu'en est-il de quelque chose dans ce sens? Le but est de réduire la quantité de code et de réduire le couplage entre les types.
Est-ce que c'est comme si enum TagStatusFilter
était mal utilisé ici?
Cela peut retourner les faux positifs si l'un nom de membre de ENUM est également une sous-chaîne d'un autre membre. –
pas dans ce cas, car la première lettre de l'enum est en majuscule. La prudence est évidemment conseillée, et je dis que je ne l'aime pas .. mais il va certainement travailler dans cet exemple :) – Sk93