내가 선택한 IoC 컨테이너 라이브러리에서 모든 코드를 분리하려고합니다 (Unity). 이를 위해 Register() 및 Resolve()를 노출하는 IContainer 인터페이스를 만들었습니다. IContainer를 구현하고 실제 컨테이너를 래핑하는 UnityContainerAdapter라는 클래스를 만들었습니다. UnityContainerAdapter가 정의 된 어셈블리 만 Unity 라이브러리에 대해 알고 있습니다.실제 IoC 컨테이너 라이브러리를 숨기는 방법은 무엇입니까?
나는 고립되어 있다고 생각합니다. Unity는 유형의 구성원에 대한 속성을 검색하여 종속성을 주입 할 위치를 확인합니다. 내가 본 대부분의 IoC 라이브러리도이를 지원합니다. 내가 가지고있는 문제는 그 기능을 사용하고 싶지만 클래스가 Unity 특정 속성에 의존하는 것을 원하지 않는다는 것입니다.
이 문제를 해결하는 방법에 대한 제안 사항이 있으십니까?
이상적으로 필자는 자신의 [Dependency] 특성을 만들어 내 코드에서 사용합니다. 하지만 실제 컨테이너에 자체 속성 대신 내 속성을 검색하도록 알려줘야합니다. Common Service Locator 프로젝트 밖으로
다른 IoC 프레임 워크를 사용하여 IoC 프레임 워크를 주입 할 수 있도록 선택 했습니까? 내 머리 아파! –
@ David M : 나는 외부 라이브러리에 대한 의존성을 줄이는 것을 좋아한다. 모든 IoC 라이브러리는 종이에서 동일하게 보이므로 실제로 시도하지 않고 하나를 선택하는 것은 어렵습니다. 나는 Unity와 함께 큰 한계를 발견 할 것입니다. 라이브러리에서 다른 코드를 분리하면 필요할 경우 쉽게 변경할 수 있습니다. – Sylvain