Prism 1 포스팅에 이어 두번째 포스팅이다.
우리는 프로젝트 수행 중 몇가지 요구 사항으로 인하여 프로그램 런타임 시에 동적으로 어셈블리를 로딩 하여야 할 경우가 있다. 이럴 때 리플렉션을 이용하여 할 수 있다는 것은 누구나 다 알고 있는 내용일 것이다. 물론 리플렉션은 프로젝트의 타입 안정성을 해친다는 등 단점들이 존재 한다. 리플렉션을 이 포스트에서 논하는 것은 범위 밖 이므로 리플렉션은 MSDN을 참고 하기 바란다.
리플렉션을 자세히 보시려면 이곳을 클릭 -> https://msdn.microsoft.com/ko-kr/library/ms173183.aspx
원격지 모듈 로딩은 프리즘을 이용하여 원격지에 있는 구성 요소를 로딩 할 수 있는 방법이다.
포스트 1에서 작성 하였던 ModuleA 모듈을 일단 분리 하였다. 이 후 시작 프로젝트에 ModuleCatalog.xaml 을 생성 속성을 다음과 같이 수정 한다.
코드를 확인 하자.
중요한 것은 xmlns:Modularity="clr-namespace:Microsoft.Practices.Prism.Modularity;
assembly=Microsoft.Practices.Prism.Composition"
Modularity 클래스는 Ref 참조 와 ModuleType 이 필수 항목이다. Ref는 설명하지 않아도 될 듯 하다.
단지 ModuleType 만이 약간의 설명이 필요해 보인다.
ModuleType의 첫번째 요소는 Type을 표시 한다. 두번째 요소는 Namespace를 의미 하며, 세번째 요소는 Version을 의미 한다. 프로젝트의 AssemblyInfo 클래스를 참조 하자.
이제 이 포스트의 마지막 요소이다. ModulesCatalog.xaml 을 만들었으니 Bootstrapper가 이 xaml 파일을 파싱 로드 해야 할 것이다.
이상이다. 정말 쉽게 할 수 있다는 것을 알 수 있다. 리플렉션에 비하면 말이다.
'Functional World > C# Design Pattern' 카테고리의 다른 글
Prism 3 - Unity Container 설명 - 디펜던시 인젝션 이라는걸 듣도 보도 못한 분들을 위해...... (0) | 2015.06.28 |
---|---|
Prism 1 - Hello World Prism for WPF ~~~ (0) | 2015.06.26 |
Dependency Injection Container (0) | 2014.11.17 |
C# 으로 구현 하는 Singleton Pattern (0) | 2013.11.26 |
Strategy Pattern (0) | 2013.08.13 |