IRepositoryに基づいてデータアクセス用のデコレータチェーンを実装しようとしています。データアクセス(現時点ではメモリ内リストのみ){1}を実行するリポジトリがあり、検証{2}を実行するリポジトリがあります。その上、私は自分のリポジトリの特殊化であるIUsersRepository {3}を持っています。これは、ベースインターフェイスで別のメソッドを定義します。最新のトランクリビジョン5376で実行しています。
流暢なインターフェースを使用してコンポーネントを登録できるようにしたいのですが、XMLを介して、innerRepoとして使用するサービスのキーを指定することはできますか?もしそうなら、どのように?( XML構成の例については、Bitter Coder Decoratorチュートリアルを参照してください)。他のことは別として、登録の順序に依存する必要はありません。
私はこのブログ投稿をフォローしています。
コンテナにIRepository{4}を要求すると、デコレータチェーンを機能させることができました。データアクセスの前にValidatingRepositoryメソッドが呼び出されるのがわかります。しかし、コンテナにIUserRepositoryを要求した場合、それを機能させることができませんでした(InvalidCastExceptionが発生します-これは予期されていると思いますが、回避可能ですか?)。
サービスで1つのdecorated-repoリポジトリと1つのspecialized-methodsリポジトリを使用する必要がないようにしたいと思います。これはエラーが発生しやすいと私を襲います。現時点では、私の専門的なメソッドはすべて、さまざまな基準でエンティティをフェッチすることと関係があります-Getメソッドに分離基準を取得させることができると思います-これにより、インターフェイスに1つだけを設定でき、特殊なインターフェース。NHibernateを確実に使用することに決めていないため、許可されていないことを除いて。おそらく、IRepo.GetをデリゲートまたはIQueryableにした場合はどうでしょうか。何か案は?私は今朝ずっと頭をぶつけてきました、そして私がトンネル視力を持っていても驚かないでしょう、そして別の、より良い、アプローチがあります。どんな提案も歓迎します!
{1}-{4}は、utilitybaseのコピー/貼り付け機能で確認できます。