J'ai une situation étrange où j'ai besoin d'obtenir le nom du délégué sous forme de chaîne. J'ai une méthode générique qui ressemble à ceci.Nom de l'action/délégué Func
private T Get<T>(T task, Action<T> method) where T : class
{
string methodName = method.Method.Name //Should return Bark
}
et je vous appelle comme ça
private void MakeDogBark()
{
dog = Get(dog, x=>x.Bark());
}
Mais au lieu de voir "écorce" Je vois ce "<MakeDogBark>b__19"
. Il semble donc qu'il me donne le nom de la méthode qui a fait l'appel initial au lieu du nom du délégué.
Quelqu'un sait-il comment faire?
Cela a fonctionné à merveille. Je n'avais pas besoin de l'exécuter mais je devais passer le nom de la méthode à une classe qui ferait quelque chose avec. Au lieu de simplement prendre une chaîne, je voulais que le type de sécurité de l'appelant ait à me donner une vraie méthode. Comme toujours vous êtes l'homme :) – Adam
@Jon Y at-il un moyen de faire de même avec une méthode générique? –
@ArnabChakraborty: Vous devez également spécifier l'argument type, mais je pense que cela fonctionnerait. Je ne peux pas facilement l'essayer maintenant. –