私の質問は、デリゲートの一部として呼び出されるメソッドで属性を取得することに関するものです。 Page.OnLoad又はButton_Click] _Page_Loadメソッドを反映するとnullが返される
私はこの方法は、_ _ [AnyWebControl_Event] _ [をPage_Load] _または上[MyMethodAttribute(PropertyOne、PropertyTwo)]属性。このメソッドの属性は、実行時にそのメソッドが配置されたメソッドに対して照会する必要があります。このメソッドは、任意のWebページのコードビハインドに存在します。すべてのウェブページは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]を呼び出してページを読み込みます。これはメソッドのハンドルを得ることができず、その周りのさまざまな方法で試しました。
1つの方法は、どのイベントデリゲートがロードまたはポストバックをトリガーしたかを照会することでした。しかし、イベントはクラスの外部からはアクセスできないので、私は使用できませんMyDelegate.GetInvocationList()これはnullを返すためです。
何か助けていただければ幸いです。
さらに努力した結果、__EVENTARGUMENTがメソッド名を提供することがわかりました。 私は今、別の問題があります。 Page_LoadメソッドのASPXページを反映すると、nullが返されます。 アイデア
Page_loadは保護されたメソッドであり、Public BindingFlagsを使用していました。したがって、NonPublicを使用した後|インスタンスフラグ私はPage_Loadメソッドにrelfectionを使用することができます
私の問題の答えが見つかりました。 Page_Loadメソッドが保護されていて、パブリックバインディングフラグを使用していました。私の問題は解決されました。 – ank07