6장 - 리플렉션2 (확장모듈 만들어보기)

2014. 12. 24. 00:23IT Books/시작하세요 C# 프로그래밍

리플렉션을 이용한 확장 모듈 구현


대개 플러그인을 구현한 소프트웨어는 다음과 같은 동작 양식을 가진다.


1. exe 프로그램이 실행되는 경로 아래에 확장 모듈을 담도록 약속된 폴더가 있는지 확인

2. 해당 폴더가있다면 그 안에 dll 같은 파일이 있는지 검사하고 로드

3. 파일이 로드됐으면 사전에 약속된 조건을 만족하는 타입이 있는지 검사

4. 조건에 맞는 타입이 있다면 생성하고, 사전에 약속된 메서드를 실행


이 조건에 맞춰

다음과 같이 규칙을 정한다.


1. 확장모듈은 exe아래에 [plugin] 폴더

2. 플러그인 타입조건은 타입에 [PluginAttribute] 라는 이름의 특성이 부여되어 있어야 함

3. 호출된 메서드는 [StartupAttribute] 라는 이름의 특성이 부여되어 있어야 함. 다만 입력인자와 출력인자로 없어야 함.


플러그인 호출하는 exe 코드



플러그인



특성 클래스를 만들고 미리 지정한 프로토콜에 따라 메서드를 작성했다.

양쪽을 빌드하고 만들어진 dll을 exe가 위치한 폴더안에 plugin폴더를 만들어 위치해 두고 실행하면
플러그인의 메타정보를 찾아 실행이 된다.

--
컴파일 시점에는 전혀 몰랐던 코드 정보를 실행시점에 알 수 있다는 것을
느슨한 결합(loosely coupled)이라고 한다.

닷넷을 이용한 프레임워크 제작에 흥미가 있다면 리플렉션을 이용한
이런 기술을 필수적으로 익혀야 한다.


'IT Books > 시작하세요 C# 프로그래밍' 카테고리의 다른 글

7장 - c#2.0 - 그외  (0) 2014.12.28
7장 - c#2.0 - 제네릭  (0) 2014.12.25
6장 - 리플렉션1  (1) 2014.12.21
6장 - 쓰레드, 네트워크, 데이터베이스  (0) 2014.12.21
6장 - 3 (컬렉션)  (0) 2014.12.20