我能找到我正在使用的方法的名称吗?

时间:2008-12-03 13:26:29

标签: c# oop reflection

说我有一些像

这样的代码
namespace Portal
{
  public class Author
    {
        public Author() { }
        private void SomeMethod(){
          string myMethodName = ""; 
          //  myMethodName = "Portal.Author.SomeMethod()";
        }
    }
}

我可以找到我正在使用的方法的名称吗?在我的示例中,我想以编程方式将myMethodName设置为当前方法的名称(即在本例中为"Portal.Author.SomeMethod")。

由于

5 个答案:

答案 0 :(得分:14)

MethodInfo.GetCurrentMethod().Name

答案 1 :(得分:3)

System.Reflection.MethodBase.GetCurrentMethod()。名称

答案 2 :(得分:2)

MethodBase.GetCurrentMethod()

答案 3 :(得分: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;

答案 4 :(得分:1)

虽然@leppie让我走上了正确的轨道,它只给了我方法的名称,但是如果你看看我的问题,你会看到我想要包含命名空间和类信息......

所以

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