Отражение над методом Page_Load возвращает ноль - PullRequest
1 голос
/ 03 декабря 2010

Мой вопрос связан с извлечением атрибутов через метод, который вызывается как часть делегата _ [например, 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

Ответы [ 2 ]

1 голос
/ 03 декабря 2010

После некоторых дополнительных усилий я обнаружил, что __EVENTARGUMENT предоставит мне имя метода.


Page_load является защищенным методом, и я использовал Public BindingFlags.Так что после использования NonPublic |Флаг экземпляра Я могу добраться до метода Page_Load с Relfection

0 голосов
/ 03 декабря 2010

А как насчет Page.IsPostback?Если IsPostback имеет значение false, загрузка страницы не была инициирована обратной передачей и является новой загрузкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...