2008-12-03 84 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

3

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

2

MethodBase.GetCurrentMethod()

2

System.DiagnosticsStackFrame/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; 
相关问题