0

我有一个自定义方法Control,我在上面覆盖了该OnInit方法。

更新

看来我需要Init通过userControl.GetType().GetEvent("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方法中设置断点时,它不会被调用。我在这里错过了什么吗?任何帮助是极大的赞赏。

4

1 回答 1

1

OnInit受到保护,您使用的GetMethod重载仅获取公共方法。

您可以使用带有绑定标志 NonPublic 的重载来获取受保护的方法。

于 2013-02-11T10:25:58.280 回答