Могу ли я узнать название метода, который я использую? - PullRequest
3 голосов
/ 03 декабря 2008

Скажи, у меня есть код вроде

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

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

Спасибо

Ответы [ 5 ]

14 голосов
/ 03 декабря 2008
MethodInfo.GetCurrentMethod().Name
3 голосов
/ 03 декабря 2008

System.Reflection.MethodBase.GetCurrentMethod (). Имя

2 голосов
/ 03 декабря 2008

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;
2 голосов
/ 03 декабря 2008

MethodBase.GetCurrentMethod ()

1 голос
/ 04 декабря 2008

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

так

myMethodName = System.Reflection.MethodBase.GetCurrentMethod().ReflectedType + 
                 "." + System.Reflection.MethodBase.GetCurrentMethod().Name;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...