Unity에서 "주입"?
-
20-08-2019 - |
문제
동일한 인터페이스를 통해 하나에서 많은 백엔드 시스템에 연결하는 것이 포함되는 프로젝트가 나옵니다. 그것을 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, 그것은 블로그에서 실제로 목록 주입을 지원하는 몇 안되는 컨테이너 중 하나입니다.