のリストを返すリポジトリがあるとしますPost
。リポジトリ インターフェイスには、GetAll()
それが示唆することを行うメソッドがあります。
ドメインロジックをリポジトリに入れるべきではないという理論に沿ってGetAll()
、次のロジックをGetAll()
結果に追加できるように、具体的なメソッドへの呼び出しをインターセプトしたいと考えています。
return GetAll().OrderByDescending(p => p.Posted).ToList();
これを傍受したい理由は、(1)クライアントに拡張メソッド(OrderByDescending
またはその役に立たないラッパー)を呼び出すことを覚えてもらいたくない、毎回呼び出す必要がある、および(2)そうしないためですすべての具体的な実装で、GetAll()
結果を順序付けすることを忘れないようにしたい - このロジックを任意のリポジトリの外部の単一の場所に配置したい。
これを行う最も簡単な方法は何ですか?
私はすでにStructureMapを使用しているので、これで傍受できれば、低コストのオプションになる可能性があります。しかし、SM がメソッド呼び出しをインターセプトするとは思いません。オブジェクト インスタンスの作成だけですか?
プロキシまたは mixinパターンに移動する必要がありますか? Castle Dynamic Proxyにオールインする必要がありますか? または、考慮すべき別の方法、またはおそらく組み合わせがありますか?
上記の特定の例に対する具体的な提案に本当に興味があります。私はAOPの初心者なので、優しくしてください。