【发布时间】:2013-02-11 09:28:44
【问题描述】:
我有一个自定义的Control,我在它上面覆盖了OnInit 方法。
更新
看来我需要通过userControl.GetType().GetEvent("Init") 获取Init 事件。但是,该事件的 RaiseMethod 属性是 null,因此我无法通过反射引发该事件。 有什么线索吗?
旧
我使用以下代码加载控件(ReflectionUtil 使用反射调用方法):
Page p = new Page();
UserControl userControl = (UserControl)p.LoadControl(path);
p.Controls.Add((Control)userControl);
//EventArgs eventArgs = new EventArgs();
//ReflectionUtil.CallMethod((object)p, "OnInit", (object[])new EventArgs[1] { eventArgs });
//ReflectionUtil.CallMethod((object)userControl, "OnInit", (object[])new EventArgs[1] { eventArgs });
//Plain Reflection doesn't work either...
EventArgs eventArgs = new EventArgs();
MethodInfo initMethod = userControl.GetType().GetMethod("OnInit");
initMethod.Invoke(userControl, (object[])new EventArgs[1]
{
eventArgs
});
但是,当我在自定义控件的 OnInit 方法中设置断点时,它不会被调用。 我在这里遗漏了什么吗?非常感谢任何帮助。
【问题讨论】:
-
ReflectionUtil 代码中的错误?它在其他情况下是否有效?
-
普通的旧反射也不起作用...但是它找不到
OnInit方法或Init方法...
标签: .net webforms page-lifecycle