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