개발자의 코드 노트
외부 어셈블리에 이벤트 핸들러 추가 본문
최근 리플렉션을 활용할 일이 많은 개발 작업을 하고 있습니다.
외부 어셈블리에다가 동적으로 이벤트 핸들러를 연결할 필요가 생겨서 찾아보았습니다.
우선, 연결할 메소드를 찾아줍니다.
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 |
'프로그래밍 > NET Framework' 카테고리의 다른 글
ASP.NET Core 프로젝트를 IIS 서버에 게시 (0) | 2018.05.19 |
---|---|
ASP.NET Core Entity Framework MySQL 연동 (1) | 2018.05.19 |
ASP.NET Core WebAPI 시작 (0) | 2018.05.19 |
WPF 투명창 애니메이션 복원 (0) | 2018.04.19 |
MVVM 디자인 패턴에 대해서 (1) | 2015.11.26 |
Comments