나는 서비스의 여러 구현을 바인딩 할 한 번에 호출 모두 있습니다Ninject에 멀티 캐스팅
var kernel = new StandardKernel();
kernel.Bind<IBreakfast>.To<Spam>();
kernel.Bind<IBreakfast>.To<Eggs>();
kernel.Bind<IBreakfast>.To<MoreSpam>();
kernel.Get<IBreakfast>().Eat(); // call Eat method on all three bound implementations
Ninject에 그렇게하지 않고, 여러 바인딩을 가진에 대한 예외를 던질 것이다. 그 오류를 해결할 수있는 방법이 있습니까, 그리고 모든 구현을 호출해야합니까?
또한 Bind<>
호출은 런타임에로드 될 수도 있고로드되지 않을 수도있는 다른 프로젝트에있을 수 있으므로 호출하기 위해 단일 구현을 만드는 것은 작동하지 않습니다. 이것은 ASP.NET MVC 3 웹 사이트 용 플러그인 아키텍처의 일부입니다.
아침에 이것을 시도 하겠지만, 바인딩 <> ('두 번째 호출에 오류가 발생해서 Ninject하지 않습니다) .To <>()'? – MikeWyatt
@MikeWyatt : 아니요, 여러 개의 Bind가 좋습니다. 좋지 않은 것은'Get'이'Single '항목 이상을 산출하는 것입니다. 원하는 경우'GetAll '을 사용하거나'List ','T []'또는'IEnumerable '을 통해 여러 등록을 암시 적으로 일괄 처리 할 수 있습니다.) (그리고 게시/코드 테스트는 결코 폭발물을 게시하지 않습니다!). Ninject는 원하는 방식으로 호출을 멀티 캐스트하기 위해 암시 적 컴포지트를 생성하는 데 많은 어려움을 겪지 않습니다. –
위대한 작품입니다. 감사. – MikeWyatt