문제

동일한 인터페이스를 통해 하나에서 많은 백엔드 시스템에 연결하는 것이 포함되는 프로젝트가 나옵니다. 그것을 ibacksideprovider라고합시다.

Unity를 사용하여 런타임에 이러한 공급자를 주입하고 싶습니다. 문제는 우리가 1 ... n 백엔드 시스템에 대해 이야기하기 때문에 ibacksideprovider의 1 ... N 구현을 등록해야한다는 것입니다. Unity는 이것을 상자에서 지원하지 않습니다.

이 블로그 게시물 그러나 그것이 할 수 있다고 제안합니다. 나는 누군가가 이것을했는지 또는 이것을 할 수 있도록 연합을 일으키는 방법을 알고 있는지 궁금합니다. 티아.

도움이 되었습니까?

해결책

이것이 작동하지 않는 이유가 있습니까?http://msdn.microsoft.com/en-us/library/cc440943.aspx

명명 된 등록을 기반으로 컨테이너에서 객체 인스턴스 목록을 검색하려면 ResolVeall 메소드를 사용하고 객체 유형 (등록 유형)의 값을 지정하십시오. Resolveall 메소드는 코드를 통해 반복하여 각 객체를 검사 할 수있는 비 디퍼 컬 (명명) 등록 유형의 ienumerable 일반 목록을 반환합니다.

IEnumerable<IMyObject> objects = myContainer.ResolveAll<IMyObject>();

다른 팁

Unity는 2008 년 11 월에 출시 된 버전 1.2 기준으로 배열 주입을 지원합니다. 이것은 Unity 컨테이너를 물체에 주입하지 않고 현재 할 수있는 최선입니다.

linfu.ioc ienumerable을 지원합니다u003CT> 그리고 Ilistu003CT> 생성자, 속성, 방법 및 심지어 필드에 대한 주입은 상자 밖으로 바로 나옵니다. Afaik, 그것은 블로그에서 실제로 목록 주입을 지원하는 몇 안되는 컨테이너 중 하나입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top