1、仕様のインターフェースを作成する(汎用)
public interface ISpecification<T> { bool IsSatisfy(T value); }
2、仕様の具象クラスを作成する
public class ItemSpecification : ISpecification<ItemCategory> { //判定ルール public bool IsSatisfy(ItemCategory value) { return value.TaxCd == "1"; } }
3、リポジトリクラスに仕様インターフェースをパラメタとしたメソッドを作成する
public interface IItemRepository { public IEnumerable<ItemCategory> Find(ISpecification<ItemCategory> specification); }
メリット:リポジトリクラスに特定の条件に沿った抽出条件を持たなくて済む(抽出条件の仕様を外に出せる)