我有一个枚举,假设:
public enum ItemStatus {
Available, Unavailable
}
我有一个基于过滤器返回这些电视列表的方法。过滤器由 Enum 表示:
[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
这里被滥用了?