2013-06-17 4 views
2

아마도 간단한 질문이지만 설명서 나 SO에서 직접 찾지 못했습니다.Ninject.Activation.IRequest Target 속성이 null이되는 원인

나는 처음으로 Ninject When(Func<IRequest, bool> condition) 확장 메서드로 작업해야했고 null 개체 예외가있는 상태로 조금만 끊었습니다. IRequest.Target 속성이 때때로 null 인 것을 알아 냈습니다. otherexamples 을 사용하면 null을 확인합니다. Target도 확인했습니다.

Ninject가 Target에 대한 값을 가지지 않고 콜백을 실행하는 조건에 대해 궁금합니다. 만들 때 내가 초기에 잘못 바인딩이 실행될 때 항상 형 T1의 유효한 Target이있을 것이라고 가정

Bind<T1>() 
    .To<T2> 
    .When(r => SomeTest(r.Target)); 

형태의 결합.

답변

2

이 경우 대상이 없으므로 루트 개체의 경우 null입니다. (kernel.Get<MyCompositionRoot>())

+1

이렇게하면 'T1'유형이 생성자 인수로 * 전용 *으로 표시되면 'Target'은 null이되지 않습니다. 다른 말로하면, 널 타겟을 만날 경우, 반드시 어딘가에서 직접 바인딩을 요청하는 비트 코드가 있다는 것을 의미합니까? 'var x = kernel.Get ()'? – Lucas

관련 문제