我有一個枚舉,假設:地圖枚舉爲[標誌]枚舉
public enum ItemStatus {
Available, Unavailable
}
我有一個返回的電視列表,基於過濾器的方法。
[Flags]
public enum ItemStatusFilter {
Available = 1, Unavailable = 2
}
問:什麼是檢查是否ItemStatus給出實例相匹配給出ItemStatusFilter的實例光滑的方式而濾波器是由枚舉表示?
我不喜歡爲ItemStatus成員賦值(1,2)的想法,因爲它不是該枚舉所要求的。現在我的代碼看起來如下:
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;
}
沿着這些方向怎麼辦?
[Flags]
public enum TagStatusFilter {
Available = 1 << TagStatus.Available,
Unavailable = 1 << TagStatus.Unavailable
}
目標是減少代碼量,並減少類型之間的耦合。
是否覺得enum TagStatusFilter
在這裏被濫用?
可能返回誤報,如果一個枚舉成員的名字也是另一個成員的子字符串。 – 2009-09-25 12:37:32
不在此例中,因爲枚舉的第一個字母是大寫。 小心顯然是建議,我確實說我不喜歡它..但它肯定會在這個實例工作:) – Sk93 2009-09-26 16:04:14