ASP.NETコンパイラは、ページクラスから継承する新しいクラスを作成します。
namespace ASP
{
[CompilerGlobalScope]
public class MyPage_aspx : MyPage, IHttpHandler
{
// all methods that resulted from parsing your ASPX page
// Build controls, write literal text, etc
}
}
ユーザープロファイルのあなたのAppDataフォルダにまたは.NET Frameworkフォルダのいずれかで、ASP.NETの一時ファイルファイルフォルダに格納されています生成されますコード:だから、のようなものを持っていますただし、これらの中間CSファイルおよびアセンブリを格納する場所も設定可能です。
静的メソッドを見つけるには(それはpublicまたはprotectedのいずれかであることが必要)ページからGetMethodドキュメントで見つかった発言をもとに、次のBindingFlag
BindingFlags.FlattenHierarchy
を追加します。
階層の上にpublicおよびprotectedの静的メンバーを含めるには、BindingFlags.FlattenHierarchy
を指定します。継承クラスのプライベート静的メンバーは含まれません。
あなたの呼び出しには少なくともそのBindingFlagを含める必要があります。それ以外にも、InvokeMethod広告公開フラグが必要です。これはあなたのCreate
方法が実際にプライベートインスタンスメソッド静的ではないと仮定しない
var MyMethod = this.GetType().
GetMethod(
"Create",
BindingFlags.Static |
BindingFlags.FlattenHierarchy |
BindingFlags.InvokeMethod |
BindingFlags.Public);
:完全なコールは次のようになります。
Createメソッドはpublicであり、staticは実際にWebMethodですが、提案したフラグでnullを返しています。 – Sisyphus
GetMethodsはすべての正しいメソッドを返すように見えますが、GetMethodは常にnullを返しています。 – Sisyphus
@ Sisyphusには、PublicとInvokeMethodのフラグも必要です。私の更新された答えを見てください。 – rene