Windows Phone 페이지 (MainPage)가 있고 코드 숨김에 MouseReference 이벤트에 동적으로 이벤트 처리기를 추가하려고합니다. 트릭은 내가이 이벤트 핸들러는 객체와 이벤트 인수를 갖고 싶어한다 :이벤트 처리기 인수가 메서드의 객체 인 경우 AddEventHandler
this.MouseEnter += MyEventHandler;
:
private void MyEventHandler(object sender, object args)
{
}
이 작동 (그 이유는이 단순화 된 예는 것입니다)
그러나이 ArgumentException이 발생합니다 :
var handlerType = Type.GetType("System.EventHandler`1").
MakeGenericType(typeof(EventArgs));
this.GetType().GetEvent("Hold").AddEventHandler(
this, Delegate.CreateDelegate(handlerType, this, "MyEventHandler"));
그리고 예외의 메시지는 다음과 같습니다 "서명 또는 보안 투명성이 대리자 형식의 서명 또는 보안 투명도와 호환되지 않기 때문에 대상 메서드에 바인딩 할 수 없습니다." 이벤트 처리기의 시그니처를 변경하면 모두 작동하지만 "객체"또는 "동적"으로 유지하려고합니다.
AddEventHandler 호출과 함께 이벤트 처리기를 추가하려면 어떻게해야합니까?
도움이 매우 감사합니다.
정적이 아닌 MyMethod와 함께 작동하려면 다음과 같이하십시오. 만약 당신이 그것을 Test로 옮기고 "static"을 "public"으로 변경한다면, var te = Delegate.CreateDelegate (e.EventHandlerType, new EventHandler (MyMethod) .Method) e.EventHandlerType, t, 새 EventHandler (t.MyMethod). 메소드);'. 잠시 동안 이것을 생각하고 공유하고 싶었습니다. – ulatekh