2012-04-06 3 views
1

CommonServiceLocator는 다른 IoC 컨테이너를 전환 할 수 있도록 해주는 중개자이지만 MVVM Light의 샘플 코드, 특히 ViewModelLocator를 보면 의미에서 흥미로운 것으로 보입니다.MVVM Light - 간단한 IoC + CommonServiceLocator?

SimpleIoC를 기본 로케이터로 등록하지만 동시에 SimpleIoc 기본 인스턴스에서 Register를 호출합니다.

앞으로 SimpleIoC를 제거하려고한다면 모든 등록 전화를 업데이트해야 할 필요가 없다는 뜻입니까?

또 다른 질문은 이전에 Castle Windsor를 사용하고 .config 파일을 통해 유형을로드하여로드 유형을 지원했는데 Windows 8 시나리오에서 어떻게 작동할까요?

IoC의 사용이 지금 당장 드러나는 시나리오를 찾으려고합니다.

답변

5

공용 서비스 로케이터 구현은 getter 호출 (GetInstance, GetAllInstances 등)을 바꿀 필요가 없지만 거기에서 멈추지 않도록합니다. 등록은 IOC 컨테이너를 독특하게 만드는 것입니다. 예를 들어, 언급 한 것처럼 일부는 구성 파일 (SimpleIoc이 지원하지 않는 구성)을 사용한 구성을 지원합니다. 예, SimpleIoc을 다른 IOC 컨테이너로 대체하면 일반적으로 등록 파트를 대체하게됩니다. 일반적으로 이러한 호출은 일반적으로 공통된 위치에 그룹화되므로 대체하기가 쉽기 때문에 대개 OK입니다.

자세한 내용은 http://commonservicelocator.codeplex.com/ 페이지를 확인하십시오.

SimpleIoc을 MVVM Light에 추가 할 때의 목표는 강력한 IOC 컨테이너를 제공하는 것이 아니 었습니다. 사실, 나는 기존의 것 (Castle Windsor, StructureMap, Unity 등)에 굴복한다. 대신 IOC 컨테이너 세계에서 미숙 한 사용자를 유혹 할 간단한 구현을 제공하고자했습니다. 더 많은 고급 기능이 필요할 때 더 복잡한 구현으로 옮겨 갈 것입니다.

희망적이라고 생각하세요! 로렌

+0

SimpleIoC는 [inspired] (http://geekswithblogs.net/lbugnion/archive/2011/04/14/mvvm-light-v4-preview-3-bl16-mix11-edition-mvvmlight.aspx)이므로, [Simple Injector] (http://simpleinjector.codeplex.com)에 의해 단순 흡입기 (공식적으로 Simple Service Locator)를 사용하지 않은 이유는 무엇입니까? – Steven

+0

로랑 답장을 보내 주셔서 감사합니다. 나는 실제로 내가 실수 한 것으로 추측한다. 그래서이 Simple IoC는 간단히 말해서 타입 컨테이너이다. MS Common Service Locator, 심지어 생성자/속성 기반 주입을 지원 하는가? –

관련 문제