0

重複の可能性:
メソッド参照 C# から methodinfo を取得する

これはおそらく簡単なことですが、これまでのところ、これを行う方法について何も思いつきませんでした。

メソッドの名前を 2 つの異なる方法で取得できるようにしたいと考えています。プロパティ名ではなく、メソッド名が必要であることに注意してください。

1) のようなクラスの内部で、次のClassA<T>ようになります。

var name = GetMethodName(x => x.MethodA);

2) クラスの外では、次のようになります。

var name = GetMethodName<ClassA<object>>(x => x.MethodA);
var name = GetMethodName<ClassB>(x => x.MethodB);

これを正確に行うにはどうすればよいですか?

ありがとう!

4

1 に答える 1

1

x => x.MethodAラムダ (など)は必要ありません。それは問題を混乱させるだけです(そして、関心のあるメソッドを隠しています。MethodAビットはGetMethodNameメソッドから隠されます)。

代わりに、リフレクションを使用しMethodInfoて、プロパティを持つオブジェクトを取得できNameます。

例えば:

MethodInfo sm = typeof(SomeClass).GetMethod("SomeMethod");
string methodName = sm.Name;

ここmethodNameに文字列があります"SomeMethod"。(もちろん、この単純なケースでは、クラス名を使用してMethodInfoオブジェクトを取得したため、多少循環的であり、"SomeMethod"代わりにハードコードされた文字列を使用した方がよいでしょう!)

于 2012-10-14T17:13:22.543 に答える