2011-10-01 4 views
1

에서 제네릭 형식을 받고 요청한 유형에 대한 세션을 자동으로 생성하고 바인드 하시겠습니까? 나는이 시도하지만 난()> <의 경우에 넣어 모르는 : 나는 제네릭 형식을 가져 오는 데 사용되는 필요 같이Ninject에 내가는이 같은 저장소를 ToMethod

kernel.Bind(typeof(IRepository<>)) 
    .To(typeof(Repository<>)) 
    .WithConstructorArgument("session", SessionFactory.For<>().OpenSession()); 

은 외모와 <>()

의 경우에 통과

어떻게하면됩니까?

답변

2

WithConstructorArgument을 사용해야합니다. 대신에 Session을위한 바인딩을 생성하십시오.

kernel.Bind<ISession>.ToMethod(context => ....).InRequestScope(); 

당신은 context.Request.ParentRequest.Service에서 IRepository<> 유형을 얻을 수 있습니다. 이제 리플렉션을 사용하여 엔티티 유형을 추출 할 수 있습니다. 그러나 모든 엔티티에 대해 동일한 데이터베이스를 사용하는 경우 모든 저장소에 대한 일반 세션을 반환하는 것이 더 쉽습니다.

관련 문제