2011-09-06 2 views
4

Microsoft Prism 4.0 응용 프로그램을 개발했으며 사용자 응용 프로그램 설정 기능을 모듈에서 사용 가능하게 만드는 방법을 이해하는 데 어려움을 겪고 있습니다.WPF Prism 4 모듈에서 사용자 응용 프로그램 설정 액세스

Properties.Settings.Default.MyProperty.

부트 로더 (속성에 대한 핸들이 있음)를 통해 채워진 간단한 클래스를 정의하고이를 모듈에 삽입 할 수 있습니다. 그러나 속성 변경을 저장하려면 핸들이 필요하다고 생각합니다. 내 모듈 (단순한 클래스 라이브러리)에서 사용할 수없는 Properties.Settings 컨텍스트에 추가하십시오.

답변

4

시나리오는 "서비스"클래스를 사용하는 완벽한 이유처럼 들립니다. 정보가있는 IUserSettingsService 및 UserSettingsService라는 인터페이스 및 클래스를 만들거나 저장 위치에서로드하고 저장할 수 있습니다.

프리즘 4.0 도움말 파일의 3 장, 구성 요소 간의 종속성 관리, 유형 등록 (DI 컨테이너로 사용하는 것에 따라 Unity 또는 MEF 중 하나)을 읽으십시오.

그런 다음 사용자 설정이 필요한 ViewModel에서 서비스를 찾아서 사용하십시오. MEF에서는 [Import] 특성을 사용하는 IUserSettingsService 유형의 속성을 추가하거나 [ImportingConstructor]를 사용하고 IUserSettingsService 유형의 매개 변수를 갖는 것이 간단합니다. Unity를 사용하면 컨테이너를 통해 서비스에 액세스 할 수 있습니다. 프리즘 도움말 파일 - 고급 MVVM 시나리오의 10 장을 참조하십시오.

덧글 토론 후 추가 : 서비스가 주 응용 프로그램의 컨텍스트에 있어야하므로 서비스 클래스를 구현할 수 있습니다. 주 프로젝트와 모듈 모두에서 사용할 수있는 공유 라이브러리에 서비스 용 인터페이스를 만듭니다. 마지막으로 모듈 대신에 부트 로더 클래스에 서비스를로드하십시오.

+0

Bahri. 귀하의 회신에 감사드립니다. 귀하의 대답은 내가 원하는 것만은 아닙니다. 나는 이미 내가 Properties.Settings를 복사하고 IModule.Initialize (나는 이것을하기위한 새로운 생성자를 만든다)를 통해 나의 모듈에 주입하는 서비스를 가지고있다). 문제는 주 응용 프로그램 프로젝트에서만 사용할 수있는 Properties.Settings 컨텍스트를 처리하는 데 있습니다. 이 프로젝트에서 래퍼 서비스를 만든 다음 내가 필요한 모듈을 가지고있어 기본 응용 프로그램 프로젝트를 참조하는 것이 매우 깨끗해 보이지 않습니다. 실제로 순환 참조를 생성 할 수 있으므로이 작업을 수행 할 수 없다고 생각합니다. – Jemmitch

+0

@ Jemmitch 나는 당신의 딜레마를 보았다고 생각합니다. Properties.Settings에 액세스하려면 서비스 구현이 주 응용 프로그램 프로젝트에 있어야하지만 인터페이스는 주 응용 프로그램 프로젝트와 모듈 모두에서 참조하는 어셈블리에 정의해야합니다. 이 방법으로 순환 종속성없이 서비스를 주입 할 수 있습니다. 나는 그 권리를 얻었 는가? –

+0

문제를 파악했습니다. 구현은 주 응용 프로그램에 있어야합니다. 공유 인터페이스에있는 인터페이스는 공유 어셈블리에있을 수 있지만 특정 시점에 모듈에 DI를 구성 할 때 구체적인 구현에 대해 알아야합니다. – Jemmitch

관련 문제