2008-12-03 5 views
3

Dire que j'ai un code commePuis-je trouver le nom de la méthode que j'utilise?

namespace Portal 
{ 
    public class Author 
    { 
     public Author() { } 
     private void SomeMethod(){ 
      string myMethodName = ""; 
      // myMethodName = "Portal.Author.SomeMethod()"; 
     } 
    } 
} 

Puis-je trouver le nom de la méthode que je me sers? Dans mon exemple, je voudrais programmer myMethodName par le nom de la méthode actuelle (c'est-à-dire dans ce cas "Portal.Author.SomeMethod").

Merci

Répondre

14
MethodInfo.GetCurrentMethod().Name 
+0

il est rapide sur le type. =) – StingyJack

+0

merci, exactement ce dont j'avais besoin: D – inspite

+0

Je m'ennuie au travail :) – leppie

3

System.Reflection.MethodBase.GetCurrentMethod(). Nom

2

MethodBase.GetCurrentMethod()

2

System.Diagnostics a le StackFrame/StackTrace qui vous permet de tout cela, y compris plus. Vous pouvez inspecter l'ensemble de la pile d'appel comme ceci:

StackFrame stackFrame = new StackFrame(1, true); //< skip first frame and capture src info 
StackTrace stackTrace = new StackTrace(stackFrame); 
MethodBase method = stackTrace.GetMethod(); 
string name = method.Name; 
1

Alors que @leppie me mettre sur la bonne voie, il ne m'a donné le nom de la méthode, mais si vous regardez ma question, vous verrez que je voulais inclure l'espace de noms et des informations de classe ...

si

myMethodName = System.Reflection.MethodBase.GetCurrentMethod().ReflectedType + 
       "." + System.Reflection.MethodBase.GetCurrentMethod().Name; 
+0

Mais vous avez demandé à propos du nom de la méthode. Pas les autres, ils ne font pas partie du nom de la méthode. – StingyJack

+0

et vous devriez le publier dans un edit de votre question, pas comme une réponse. – StingyJack

Questions connexes