Meine Frage bezieht sich auf das Abrufen von Attributen über eine Methode, die als Teil eines Delegaten _ aufgerufen wird [z. Page.OnLoad oder eine Button_Click] _Das Reflektieren über die Page_Load-Methode gibt null zurück
Ich habe eine Methode Attribut [MyMethodAttribute (PropertyOne, PropertyTwo)] über das _ [Page_Load] _ oder _ [AnyWebControl_Event] _. Dieses Methodenattribut muss zur Laufzeit über die Methode abgefragt werden, auf der es abgelegt wurde. Die Methode befindet sich im Code-Behind einer beliebigen Webseite. Alle Webseiten stammen von BaseWebPage. Das Ereignis kann entweder ein Seitenlade- oder ein Post-Back-Ereignis sein. Je nachdem, ob das Ereignis durch das Laden der Seite oder ein Postback ausgelöst wurde, erhalte ich ein Handle für das Steuerelement [eine Seite oder das Postback] und füge meine Methode [MyMethod] zur Ausführung hinzu.
_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);
}
Nach dem ich versuche, das Ereignis [z. Page_Load], die das Laden der Seite ausgelöst hat. Dies ist, wo ich nicht in der Lage bin, die Methode in den Griff zu bekommen und alle möglichen Möglichkeiten auszuprobieren.
Eine der Möglichkeiten bestand darin, abzufragen, welcher Ereignisdelegat das Laden oder Postback ausgelöst hat. Auf das Ereignis kann jedoch nicht von außerhalb der Klasse zugegriffen werden. Daher kann ich MyDelegate.GetInvocationList() nicht verwenden, da dies null zurückgibt.
Jede Hilfe wird geschätzt.
Nach einigem Aufwand habe ich festgestellt, dass __EVENTARGUMENT mir den Methodennamen liefert. Ich habe jetzt ein anderes Problem. Wenn ich über die ASPX-Seite für die Methode Page Load nachdenke, wird Null zurückgegeben. Irgendwelche Ideen?
Pageload ist eine geschützte Methode, und ich verwendete Public BindingFlags. Also nach der Verwendung von NonPublic | Instanzflag Ich bin in der Lage, die Methode_Load mit relfection zu erreichen
Ich habe die Antwort auf mein Problem gefunden. Die Page_Load-Methode ist geschützt und ich verwendete das Öffentliche Bindungsflag. Mein Problem ist gelöst. – ank07