Je sais que vous pouvez faire
Modifier avec la permission de @Pasi Savolainen
Pour obtenir
My.Current.Class
Mais ce que je peux appeler pour obtenir
My.Current.Class.CurrentMethod
Je sais que vous pouvez faire
Modifier avec la permission de @Pasi Savolainen
Pour obtenir
My.Current.Class
Mais ce que je peux appeler pour obtenir
My.Current.Class.CurrentMethod
La réflexion a un talent pour cacher la forêt pour les arbres. Vous n'avez jamais de problème pour obtenir la méthode actuelle de nom rapidement et avec précision:
void MyMethod() {
string currentMethodName = "MyMethod";
//etc...
}
Bien qu'un outil de refactoring ne résoudra probablement pas automatiquement.
Même si vous n'avez pas de soins sur le (considérable) du coût de l'aide de la Réflexion puis cette méthode d'assistance devraient être utiles:
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Reflection;
//...
[MethodImpl(MethodImplOptions.NoInlining)]
public static string GetMyMethodName() {
var st = new StackTrace(new StackFrame(1));
return st.GetFrame(0).GetMethod().Name;
}
Mise à jour: version C# 5 et .NET 4.5 avoir le golden solution à ce besoin commun, vous pouvez utiliser le [CallerMemberName] attribut pour le compilateur de générer automatiquement le nom de la méthode d'appel à un argument de type chaîne. D'autres attributs utiles sont [CallerFilePath] pour le compilateur de générer le code source du fichier chemin d'accès et [CallerLineNumber] pour obtenir le numéro de la ligne dans le fichier de code source pour la déclaration que fait l'appel.
Vous pouvez également utiliser `` qui empêchera le compilateur JIT de mettre Inline la méthode où il est utilisé.
Mise à jour :
Cette méthode contient une énumération spéciale `` qu’à partir de ma compréhension précisera au compilateur JIT que la méthode actuelle ne devrait pas être Inline.
Il s’agit de mon interprétation du commentaire associé à cette énumération présente dans SSCLI. L’observation suivante :
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.