メソッド自体を提供することにより、メソッドの名前を (文字列として) 取得する方法はありますか?
class Person
{
bool Eat(Food food){...}
}
どうにかして文字列「食べる」を取得したい。それで全部です!これは、インスタンスからでも、リフレクションを使用したクラス宣言からでもかまいません。
私の試み:
public delegate bool EatDelegate(Food f);
EatDelegate eatDel = new EatDelegate(_person1.Eat);
string methodName = eatDel.GetInvocationList()[0].Method.Name;
これには、メソッドのデリゲートを知る必要があり、全体が読み取れません
動的に呼び出すために methodName が必要です。
ノート:
- 呼び出したいすべてのメソッドのデリゲート宣言があります
- リフレクション後のエラーなどを避けるため、メソッド名の指定は避けたい
- 名前を取得したい瞬間にメソッドが呼び出されません。(使用できません
MethodBase.GetCurrentMethod()
) - .Net 3.5を使用する必要があります