我的问题与通过一个方法检索属性有关,该方法被称为委托_的一部分[例如。 Page.OnLoad或Button_Click] _
我在_ [Page_Load] _或_ [AnyWebControl_Event] _上有一个方法属性 [MyMethodAttribute(PropertyOne,PropertyTwo)] 。需要在运行时通过放置它的方法查询此方法属性。该方法驻留在任何网页的代码隐藏中。所有网页都来自 BaseWebPage 。该事件可以是页面加载或回发事件。 根据事件是由页面加载还是回发触发,我得到控件[页面或回发]的句柄并添加我的方法[MyMethod]来执行。
_eventControl = GetPostBackControl(page); //__EVENTTARGET or any control
if (_eventControl != null) // this is a postback control for any page
{
_eventControl.Load += new EventHandler(MyMethod);
}
else // this is PageLoad method for any page
{
_eventControl = page;
page.Load += new EventHandler(MyMethod);
}
之后,我正试图找到这个事件[例如Page_Load]触发了页面加载。这是我无法掌握方法并尝试各种不同方法的地方。
其中一种方法是查询哪个事件委托触发了加载或回发。但是无法从类外部访问该事件,因此我无法使用 MyDelegate.GetInvocationList(),因为这将返回null。
感谢任何帮助。
经过一番努力,我发现__EVENTARGUMENT将为我提供方法名称。 我现在有一个不同的问题。当我反映Page_Load方法的ASPX页面时,它返回null。 有什么想法吗?
Page_load是一种受保护的方法,我使用的是Public BindingFlags。所以使用NonPublic后|实例标志我可以使用relfection
访问Page_Load方法答案 0 :(得分:1)
经过一番努力,我发现__EVENTARGUMENT将为我提供方法名称。
Page_load是一种受保护的方法,我使用的是Public BindingFlags。所以使用NonPublic后|实例标志我可以使用relfection
访问Page_Load方法答案 1 :(得分:0)
Page.IsPostback怎么样?如果IsPostback为false,则页面加载不会由回发触发,并且是新加载的。