asp.net 웹 페이지가 있습니다. 다음은이 페이지를 구현하는 클래스입니다.null을 반환하는 GetMethod
public partial class _Default : System.Web.UI.Page
{
private readonly string delegateName = "DynamicHandler";
protected void Page_Load(object sender, EventArgs e)
{
EventInfo evClick = btnTest.GetType().GetEvent("Click");
Type tDelegate = evClick.EventHandlerType;
MethodInfo method = this.GetType().GetMethod("DynamicHandler",
BindingFlags.NonPublic | BindingFlags.Instance);
Delegate d = Delegate.CreateDelegate(tDelegate, this, method);
MethodInfo addHandler = evClick.GetAddMethod();
Object[] addHandlerArgs = { d };
addHandler.Invoke(btnTest, addHandlerArgs);
}
private void DynamicHandler(object sender, EventArgs e)
{
throw new NotImplementedException();
}
}
동적으로 이벤트 처리기를 연결하려고합니다. 어떤 이유로 든 method
은 null로 남아 있으며 그 이유를 알 수 없습니다. 나는 이것을 여러 번 해본 적이 있는데, 나는 무엇이 실종되었는지 알 수 없다.
편집
: 나는this.GetType()
페이지
ASP.default_aspx
의 유형을 반환이 아닌 실제의 형태 페이지를 구현하는 것을 발견했다. 난 정말
당신이 당신의 편집에 발견 한 것처럼
왜 핸들러를 직접 추가하지 않습니까? 'btnTest.Click + = DynamicHandler; ' –
@DanielHilgarth - 위임 메서드 이름을 관리 시스템의 문자열로 가져 왔기 때문에. –
그럴 경우 : 여기에 표시된 샘플 코드를 테스트 해 보셨습니까? 정말 문제를 재현합니까? 왜냐하면 나에게 보여준 코드가 좋아 보인다. –