2011-01-09 6 views
0

이 같은 설정이다 기본 저장소 그룹이 ...Ninject에 구성 - 제네릭

Bind<IRepository<SomeObject>>().To<SomeObjectRepository>().WithConstructorArgument("connection", connection); 
Bind<IRepository<SomeOtherObject>>().To<SomeOtherObjectRepository>().WithConstructorArgument("connection", connection); 
//and so on 

그 저장소는 간단하다 - 전체 클래스는 같은 간다.

public class SomeObjectRepository : Repository<SomeObject> 
{ 
    public SomeObjectRepository (string connection) : base(connection) 
    { 
    } 
} 

그래서 어쩌면 그건 바보 같아서 제네릭 기본 저장소를 만들고 모든 바인딩을이 것으로 바꿨습니다. 물론 파산 및 오류 맞았

Bind(typeof(IRepository<>)).To(typeof(Repository<>)).WithConstructorArgument("connection", connection); 

IRepository {SomeObject의}를 활성화 오류 사용 없음 생성자는 생성 할 수 없었다 {T} 를 리포지토리에 IRepository {T}에서 바인딩 구현의 인스턴스 유형입니다.

왜 작동하지 않습니까?

+0

리포지토리 <> 구현을 제공 할 수 있습니까? 특히 생성자. –

답변

0

조금 늦었지만 IRepository를 SomeObjectRepository에 바인딩해야합니다.

관련 문제