デリゲートの名前を文字列として取得する必要がある私は奇妙な状況があります。私はこのような一般的な方法を持っています。アクション/ Funcデリゲートの名前を取得
private T Get<T>(T task, Action<T> method) where T : class
{
string methodName = method.Method.Name //Should return Bark
}
と、私はこの
private void MakeDogBark()
{
dog = Get(dog, x=>x.Bark());
}
のようにそれを呼び出していますしかし、その代わりに "バーク" を見ての私は、この"<MakeDogBark>b__19"
を参照してください。だから、それは私にデリゲートの名前の代わりに最初の呼び出しを行ったメソッド名を与えているようです。
誰でもこの方法を知っていますか?
を述べただけのように、パラメータ表現の代わりにデリゲートすることによって、メソッド呼び出しの名前を取得することができます。私はそれを実行する必要はありませんでしたが、私はそれで何かをするクラスにメソッド名を渡さなければなりませんでした。文字列を取るのではなく、呼び出し元の型の安全性が私に本当の方法を与えなければならないことを望んでいました。いつものようにあなたは男です:) – Adam
@Jonジェネリックメソッドで同じことをする方法はありますか? –
@ArnabChakraborty:型引数も指定する必要がありますが、うまくいくと思います。今でも簡単にそれを試すことはできません。 –