관리 메뉴

개발자의 코드 노트

외부 어셈블리에 이벤트 핸들러 추가 본문

프로그래밍/NET Framework

외부 어셈블리에 이벤트 핸들러 추가

IODES 2015. 11. 17. 16:55

최근 리플렉션을 활용할 일이 많은 개발 작업을 하고 있습니다.

외부 어셈블리에다가 동적으로 이벤트 핸들러를 연결할 필요가 생겨서 찾아보았습니다.


우선, 연결할 메소드를 찾아줍니다.

1
MethodInfo method = GetType().GetMethod("Widget_MouseMove");
cs


여기서 주의 할 부분은, 연결할 메소드의 인자는 해당 이벤트와 동일해야 합니다.

또한 해당 메소드는 public static 메소드로 설정해야 합니다.


그 다음, 연결할 대상 이벤트를 어셈블리에서 찾아줍시다.

저는 MouseMove 이벤트에 연결을 해보도록 하겠습니다.

1
EventInfo evnetMove = assemblyType.GetEvent("MouseMove");
cs


이제, 대리자를 생성해줍니다.

1
2
Type delegateType = evnetMove.EventHandlerType;
Delegate delegate = Delegate.CreateDelegate(delegateType, method);
cs


마지막으로, 이벤트 핸들러 연결 메소드로 이벤트를 연결해주면 됩니다.

1
2
MethodInfo methodAdd = evnetMove.GetAddMethod();
methodAdd.Invoke(targetObject, new object[] { delegate });
cs


Comments