2011-02-17 3 views
3

최근 ASP.NET MVC 3 응용 프로그램이 Ninject 2.2로 업데이트되었습니다. Ninject 2.2 다중 바인딩

가 이전에 내 주요 응용 프로그램 바인딩 구현에 다음과 같은 인터페이스를 가지고 :

var arg = new ConstructorArgument("info", "something"); 
Bind<IMyInterface<MyClass>>().To<MyImplementation<BlogComment>>().WithParameter(arg); 
: 또한

Bind(typeof(IMyInterface<>)).To(typeof(MyImplementation<>)).InRequestScope(); 

, 나는 내 주요 응용 프로그램에 의해로드 된 다른 어셈블리에 다음했다

이전에는 문제가 없었지만보다 구체적인 구현 (인수가있는 구현)이 인식되고있었습니다. 이 원인과 작업 주위가 2.2에

Error activating IMyInterface{MyClass} 
More than one matching bindings are available. 
Activation path: 
2) Injection of dependency IMyInterface{MyClass} into parameter myParam of constructor of type SomeOtherClass 
1) Request for IMyInterface 

Suggestions: 
1) Ensure that you have defined a binding for IMyInterface{MyClass} only once. 

어떤 변화 2.0에서 만들어졌다 : 나는 Ninject에 2.2로 업그레이드 할 때, 나는 다음과 같은 오류가 발생했습니다?

답변

5

Ninject 2.2는 인스턴스를 확인할 때 하나의 일치하는 바인딩 만 존재하도록합니다. 2.0은 첫 번째로 일치하는 바인딩의 인스턴스를 반환하고 다른 인스턴스는 무시합니다. 그러나 하나만 요청하면 여러 바인딩을 갖는 것은 잘못된 구성을 반영하고 의도하지 않은 동작을 찾기 어렵게 만들 수 있습니다.

하지만 더 일반적인 것들로 공개 제네릭 바인딩을 무시할 수있는 가능성이 있어야합니다. 확실히 살펴보고 버그 수정 릴리즈 나 다음 주요 릴리즈에 추가 될 것입니다.

+3

오픈 소스 개발자가 각자의 프로젝트에 대한 SO 질문에 답변 해 주셔서 감사합니다. – Omar

+2

이 항목에 대한 실제 버그 수정이 있었습니까? 지금 우리를 죽이고있어. 그렇지 않은 경우, 언제 이것을 지원하는 다음 버전이 출시되기를 기대할 수 있습니까? –

+2

Ditto - 이것으로 많은 시간을 잃었습니다. –