私は列挙型を持っているとします:
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
ここで悪用されているように感じますか?