2008-12-03 4 views
3

Скажем, у меня есть некоторый код, какМогу ли я узнать имя метода, который я использую?

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

Могу ли я узнать имя метода, я использую? В моем примере мне хотелось программно установить myMethodName на имя текущего метода (т.е. в этом случае "Portal.Author.SomeMethod").

Благодаря

ответ

14
MethodInfo.GetCurrentMethod().Name 
+0

он быстро от типа. =) – StingyJack 2008-12-03 13:30:31

+0

спасибо, именно то, что мне нужно: D – inspite 2008-12-03 13:31:56

2

System.Diagnostics имеет StackFrame/StackTrace, которая позволяет просто, в том числе Больше. Вы можете проверить весь стек вызовов примерно так:

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

Хотя @leppie поставил меня на правильном пути, он только дал мне имя методы, но если вы посмотрите на мой вопрос, вы увидите, что я хотел включают в себя пространство имен и информацию о классе ...

так

myMethodName = System.Reflection.MethodBase.GetCurrentMethod().ReflectedType + 
       "." + System.Reflection.MethodBase.GetCurrentMethod().Name; 
Смежные вопросы