2012-02-19 7 views
3

Ninject의 다음 코드는 두 바인딩 모두에 대해 동일한 UnitOfWork 인스턴스를 사용합니까, 아니면 각 바인딩마다 하나씩 요청 당 두 개의 인스턴스가 생성됩니까?Ninject - do 범위는 바인딩 또는 대상 객체에 적용됩니까?

전자는 그렇지 않은 경우
Bind<IUnitOfWork>().To<UnitOfWork>().InRequestScope(); 
Bind<UnitOfWork>().To<UnitOfWork>().InRequestScope(); 

는 어떻게 IUnitOfWork과 UnitOfWork에 대한 요청이 모두 동일한 요청에 대해 동일한의 UnitOfWork 인스턴스를 활성화 할 수 있습니까?

내부 클래스 중 하나가 IUnitOfWork의 특정 구현에있는 속성에 의존하는 모듈이 있는데, 이는 내가 자체 바인딩을 필요로하는 이유입니다.

답변

3

Ninject에 3.0.0을 가져올 당신이 해달라고하면 이렇게 이유에

Bind<UnitOfWork>().ToSelf().InRequestScope(); 
this.BindInterfaceToBinding<IUnitOfWork, UnitOfWork>(); 

Heres는 Remos 포스트와 다른 대안이를 해결하기 위해서는하면 ContextPreservation 확장을 추가하고 다음과 같은 바인딩을 사용 수 있습니다

Bind<UnitOfWork, IUnitOfWork>().To<UnitOfWork>().InRequestScope(); 
관련 문제