형식 인수를 지정하는 것은 런타임 문제가 아니며 정적으로 컴파일됩니다. 유형은 컴파일시 알려 져야합니다. 시나리오에서는 잠재적으로 알려지지 않았거나 런타임에 계산됩니다. 리플렉션을 통해 유형 인수를 지정하는 메소드 호출을 구성 할 수는 있지만 그렇게하고 싶지는 않습니다.
Type ninjaType = typeof(Ninja);
var ninja = (Ninja)ninject.Get(ninjaType);
마지막으로, 대부분의 컨테이너가 특정 조건에 제공되어야 형 컨테이너 구성에 지정하는 방법을 제공한다 :
또한, 대부분의 용기는 다음과 같이 보일 것 과부하가 있어야합니다. 나는 Ninject가 어떤 상황에서 어떤 타입이 리턴되어야 하는지를 조건 적으로 명세하기위한 예쁜 DSL을 가지고 있다는 것을 알고있다. 그러나 추상화에 대한 코드를 작성하고 컨테이너가 반환 할 내용을 결정하게하려면 다음을 수행해야합니다.
class DependencyConsumer {
ctor(IWarrior warrior) {
//Warrior could be a ninja, because e.g. you told NInject
//that the dependency should be filled that way for this class
}
}
출처
2010-04-12 08:15:13
flq
downvote는 무엇입니까? 내 질문이 명확하지 않은가 - 아니면 너무 바보인가? 그의 downvoted 응답을 삭제 한 사람에 의하여 인 경우에; 그게 당신에게 그 downvote 준 .. 아니었다. – stiank81
Dstto 내 코멘트 http://stackoverflow.com/questions/2620600/specifying-type-when-resolving-objects-through-ninject/2620636#2620636. upvoting. 내가이 넌센스는 없지만 그 멍청한 질문이 아니라면 잘 모르겠다. +1 –