私は汎用インターフェースIRepository<T>
と2つの実装xrmRepository<T>
を持っていますefRepository<T>
に基づいてバインディングを変更したいT
、より具体的には が から派生しxrmRepository
たときに使用します。どうすればそれを達成できますか?T
Entity
私は現在持っています:
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>
、Contact が Entity を継承していても、解決しようとすると efRepository になります。
名前付きバインディングを使用したくない場合は、どこにでも名前を追加する必要があります。