バインディング私はT
がEntity
から派生したときに、より具体的にxrmRepository
を使用し、T
に基づいてバインディングを変更したいです。どうすればそれを達成できますか?Ninjectコンテキストは、私は一般的なインタフェース<code>IRepository<T></code>との2つの実装<code>xrmRepository<T></code>と<code>efRepository<T></code></p> <p>を持っているワット/オープンジェネリック
私は現在持っている:
kernel.Bind(typeof(IRepository<>)).To(typeof(efRepository<>)).InRequestScope();
kernel.Bind(typeof(IRepository<>)).To(typeof(xrmRepository<>)).When(request => request.Service.GetGenericArguments()[0].GetType().IsSubclassOf(typeof(Entity))).InRequestScope();
しかし、私はIRepository<Contact>
を解決しようとすると、それは、連絡先エンティティを継承していても、efRepositoryに行きます。
名前付きバインディングを使用したくない場合は、どこにでも名前を追加する必要があります。
基本クラス "エンティティ"を使用していませんでした。まだefRepositoryに結合しています。クラスそのものを使用している場合(連絡先のように)動作します。 –
EntityのすべてのサブクラスでIRepositoryをxrmRepositoryに解決しますか? – treze
しかし、私はおそらくIXRMRepository:IRepositoryを作成することになるでしょう。なぜなら、私はそれを動作させることができないからです。 –