一尘不染

从方法中检索调用方法的名称

c#

我在对象中有一个方法,可以从对象中的许多地方调用该方法。有没有一种快速简便的方法来获取称为此流行方法的方法的名称。

伪代码示例:

public Main()
{
     PopularMethod();
}

public ButtonClick(object sender, EventArgs e)
{
     PopularMethod();
}

public Button2Click(object sender, EventArgs e)
{
     PopularMethod();
}

public void PopularMethod()
{
     //Get calling method name
}

PopularMethod()我想看到的价值Main,如果它是从所谓的Main......我想看看“
ButtonClick”如果PopularMethod()是从所谓的ButtonClick

我正在查看,System.Reflection.MethodBase.GetCurrentMethod()但无法获取调用方法。我看过这个StackTrace类,但是我确实不喜欢每次调用该方法都运行整个堆栈跟踪。


阅读 190

收藏
2020-05-19

共1个答案

一尘不染

我认为如果不跟踪堆栈就无法完成。但是,这样做非常简单:

StackTrace stackTrace = new StackTrace();
MethodBase methodBase = stackTrace.GetFrame(1).GetMethod();
Console.WriteLine(methodBase.Name); // e.g.

但是,我认为您真的必须停下来,问问自己是否有必要。

2020-05-19