승 결합 제가 T
가 Entity
파생 경우가 T
에 기초하여 바인딩 구체적 xrmRepository
를 사용하여 변경할 범용 인터페이스를 IRepository<T>
두 구현 xrmRepository<T>
및 efRepository<T>
Ninject에 문맥/오픈 제네릭
있다. 어떻게해야합니까?
내가 현재 가지고 :
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로 이동합니다.
명명 된 바인딩을 사용하고 싶지 않다면 어디에서나 이름을 추가해야합니다.
"Entity"기본 클래스를 사용하여 작동하지 않았습니다. 아직도 efRepository에 바인딩. 클래스 자체 (예 : 연락처)를 사용하는 경우 작동합니다. –
Entity의 모든 하위 클래스에 대해 IRepository를 xrmRepository로 해결 하시겠습니까? – treze
예! 그러나 아마도 IXRMRepository를 만들게 될 것입니다. IRepository는 작동하지 않을 수 있기 때문에 대신에 사용합니다. –