我有一个通用接口和IRepository<T>
两个实现xrmRepository<T>
efRepository<T>
我想更改基于 的绑定T
,更具体地说,使用xrmRepository
whenT
派生自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>
它时,它会转到 efRepository,即使 Contact 继承了 Entity。
我不想使用命名绑定,否则我将不得不在任何地方添加名称。