2012-07-29 2 views
2

캘리블을 다시 배우려고 생각했습니다. 처음 몇 번의 수업은 쉬웠지만 진행하면서 복잡해졌으며 혼자서는 알 수 없습니다. 캘리브레이션에서 IOC와 함께 스크린을 사용하는 올바른 방법

나는 유형 Conductor<IScreen>의 ShellViewModel 및 앱에 ViewModels 및 관련 자원을 구성하는 IOC 컨테이너를 사용하여 IScreen 사자 아를 구현하는 몇 ChildViews이 기초의 대부분을 커버하기위한 목적으로 응용 프로그램을 설계했습니다.

자식 중 하나는 사용자가 다른 하위보기에 액세스 할 수있는 탐색 데스크와 비슷하며 해당 하위보기는 하나 또는 두 개의 다른보기에 대한 탐색을 지원합니다.

Screen 및 컨덕터의 개념을 도입 한 샘플을 검색했을 때 ActivateItem(new ChildViewModel())을 호출하여 뷰 모델을 직접 만들고 활성화 한 모든 샘플은 단순화를위한 것이지만 이러한 뷰 모델 생성이 의존하지 않고 IOC 컨테이너에 위임 할 수 있습니다.

적어도 한 화면이나 두 화면의 경우 생성자를 통해 삽입 할 수 있지만 많은보기가있는 경우 사용자는 주어진보기에서 탐색 할 수 있으며 각보기에는 고유 한 추가 종속성이 있습니까?

초보자의 어리 석음을 용서해 주실 분, 저에게 올바른 방향으로 나를 가르쳐 주시겠습니까?

답변

2

IoC 컨테이너에 종속 된 뷰 모델 팩터 리를 사용하려고합니다. 예를 들어 ShellViewModel은 NavigatorViewModel (또는 INavigatorViewModel)을 반환하는 CreateNavigatorViewModel 등의 메소드가있는 IViewModelFactory를 사용할 수 있으며이 구현은 IoC 컨테이너를 사용하여 I/NavigatorViewModel을 확인합니다.

일부 IoC 컨테이너는 이러한 팩토리의 자동 생성을 지원합니다. 예를 들어 Castle.Windsor에는 Typed Factory Facility가 있고 Ninject에는 팩토리 인터페이스를 정의하는 팩터 리 유형을 만드는 확장자가 있습니다.

+0

MEF는 IoC에서 잘 작동하지만 주로 Ninject를 사용하여 큰 성공을 거두었습니다. 전반적으로 MEF를 사용했을 때보 다 보일러 코드가 훨씬 적게 보입니다. – erodewald

관련 문제