2012-01-19 4 views

답변

2

사용 Ninject에 3.0.0-RC3 당신은 당신의 요구 사항에 따라

kernel.Bind(
     x => x.FromThisAssembly() 
      .SelectAllClasses().InheritedFrom(typeof(BaseService<>)).WhichAreGeneric() 
      .BindToAllInterfaces()); 

를 사용 할 수 있습니다 아마도 WhichAreGeneric 문을 제거 할 수 있습니다. .SelectAllClasses().InheritedFrom(typeof(BaseService<>)).WhichAreGeneric()은 바인딩이 생성되는 클래스를 선택합니다.

규칙은 인터페이스와 구현 클래스가 동일한 공개 형식 인수를 가져야 함을 보장합니다. 예 : 경우

interface IBar<T1, T2> 
interface IBaz<T> 
interface IFoo 
class Bar<T1, T2> : IBar<T1, T2>, IBaz<T1>, IFoo 
class Foo : IBar<int, int>, IFoo 

IBar<T1, T2>Bar<T1, T2>는 유일한 유효 인터페이스이다. 하지만 Foo의 경우 모두 IBar<int, int>, IFoo이 유효합니다.

+0

좋아, 답장을 보내 주셔서 감사합니다 (잠시 동안 오토 파크에 충실하겠습니다) –

+0

이제 Ninject 3.0.0-rc3을 사용하여 가능합니다. –

+0

업데이트 해 주셔서 감사합니다. 3.0 최종 기한은 언제입니까? –