静的クラスの静的メソッドのMethodInfoを取得しようとしています。次の行を実行すると、基本的な4つのメソッド、ToString、Equals、GetHashCode、およびGetTypeのみが取得されます。
MethodInfo[] methodInfos = typeof(Program).GetMethods();
このクラスに実装されている他のメソッドを取得するにはどうすればよいですか?
静的クラスの静的メソッドのMethodInfoを取得しようとしています。次の行を実行すると、基本的な4つのメソッド、ToString、Equals、GetHashCode、およびGetTypeのみが取得されます。
MethodInfo[] methodInfos = typeof(Program).GetMethods();
このクラスに実装されている他のメソッドを取得するにはどうすればよいですか?
var methods = typeof(Program).GetMethods(BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
この方法を試してください:
MethodInfo[] methodInfos = typeof(Program).GetMethods(BindingFlags.Static | BindingFlags.Public);
また、静的メソッドを知っていて、コンパイル時にアクセスできる場合は、Expression
クラスをMethodInfo
使用して、リフレクションを直接使用せずに取得できます(追加のランタイムエラーが発生する可能性があります)。
public static void Main()
{
MethodInfo staticMethodInfo = GetMethodInfo( () => SampleStaticMethod(0, null) );
Console.WriteLine(staticMethodInfo.ToString());
}
//Method that is used to get MethodInfo from an expression with a static method call
public static MethodInfo GetMethodInfo(Expression<Action> expression)
{
var member = expression.Body as MethodCallExpression;
if (member != null)
return member.Method;
throw new ArgumentException("Expression is not a method", "expression");
}
public static string SampleStaticMethod(int a, string b)
{
return a.ToString() + b.ToLower();
}
ここでは、本体のみが使用されるため、に渡される実際のパラメーターSampleStaticMethod
は重要ではないため、デフォルト値をSampleStaticMethod
渡すことができます。null