Мой вопрос связан с извлечением атрибутов через метод, который вызывается как часть делегата _ [например, Page.OnLoad или Button_Click] _
У меня есть атрибут метода [MyMethodAttribute (PropertyOne, PropertyTwo)] поверх _ [Page_Load] _ или _ [AnyWebControl_Event] _. Этот атрибут метода должен запрашиваться во время выполнения по методу, в который он был помещен. Метод находится в коде любой веб-страницы. Все веб-страницы происходят от 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 () , поскольку это возвращает ноль.
Любая помощь приветствуется.
После еще нескольких усилий я обнаружил, что __EVENTARGUMENT предоставит мне имя метода.
У меня сейчас другая проблема. Когда я размышляю над страницей ASPX для метода Page_Load, он возвращает ноль.
Есть идеи?
Page_load - это защищенный метод, и я использовал Public BindingFlags. Так что после использования NonPublic | Флаг экземпляра Я могу добраться до метода Page_Load с Relfection