J'ai parcouru, cherché et espéré mais je ne trouve pas de réponse directe.
Existe-t-il de toute façon en C # 6.0 pour obtenir le nom de la méthode actuelle en utilisant nameof
sans spécifier le nom de la méthode?
J'ajoute mes résultats de test à un dictionnaire comme celui-ci:
Results.Add(nameof(Process_AddingTwoConsents_ThreeExpectedRowsAreWrittenToStream), result);
Je préférerais ne pas avoir à spécifier explicitement le nom de la méthode pour pouvoir copier + coller la ligne, un exemple non fonctionnel:
Results.Add(nameof(this.GetExecutingMethod()), result);
Si possible, je ne veux pas utiliser la réflexion.
[~ # ~] mise à jour [~ # ~]
Ce n'est pas (comme suggéré) un doublon de cette question . Je demande s'il est explicitement possible d'utiliser nameof
sans (!) Réflexion pour obtenir le nom de la méthode actuelle.
Vous ne pouvez pas utiliser nameof
pour y parvenir, mais que diriez-vous de cette solution de contournement:
Ce qui suit n'utilise aucune réflexion directe (tout comme nameof
) et aucun nom de méthode explicite.
Results.Add(GetCaller(), result);
public static string GetCaller([CallerMemberName] string caller = null)
{
return caller;
}
GetCaller
renvoie le nom de toute méthode qui l'appelle.
S'appuyant sur la grande réponse de user3185569:
public static string GetMethodName(this object type, [CallerMemberName] string caller = null)
{
return type.GetType().FullName + "." + caller;
}
Vous permet d'appeler this.GetMethodName()
n'importe où pour renvoyer le nom de méthode complet.