通話に追加BindingFlags
してみてください。GetMethod()
たとえば、必要なメソッドが静的ではなくパブリックであると仮定します。
MethodInfo methodInfo = GetType().GetMethod( method, BindingFlags.Instance | BindingFlags.Public );
BindingFlags
ここでは、とその可能な値に関する詳細情報を見つけることができます。
http://msdn.microsoft.com/en-us/library/system.reflection.bindingflags.aspx
これはドキュメントからです:
ノート
インスタンスまたは静的をパブリックまたは非パブリックとともに指定する必要があります。指定しないと、メンバーは返されません。
別の方法は、メソッドを照会することです。
MethodInfo methodInfo = GetType().GetMethods().FirstOrDefault(x => x.Name == method);
これはすべて、あなたが見つけているメソッドがパラメータなしであることを前提としています。パラメータがある場合は、その情報をGetMethod()
orGetMethods()
メソッドに追加する必要があります。ここにいくつかのドキュメントがあります:
http://msdn.microsoft.com/en-us/library/system.type.getmethod.aspx
http://msdn.microsoft.com/en-us/library/system.type.getmethods.aspx
最後に、そのシナリオでページクラスの新しいインスタンスを作成するのは少し奇妙に思えます。新しいインスタンスではなく、ページの現在のインスタンスに対してメソッドを実際に実行したい場合は、コードは次のようになります。
private void callMethod( string method ) {
MethodInfo methodInfo = GetType().GetMethod( method );
methodInfo.Invoke( this, null );
}
それが役に立てば幸い!