我想找到运行时对单个类的所有方法调用的位置。我正在使用反射,但我找不到一种方法来定位它在哪里被使用。例如:
public class Test
{
public void Method1()
{
// do something
}
public void Method2()
{
Method2();
}
}
我想在运行时发现Method2被Method1调用。有办法吗?
我认为应该有,因为Visual Studio可以通过"查找所有引用"来实现。谢谢。
我认为您需要解析您正在查看的方法的方法体,参见[^]。它可能会帮助你开始。
顺便说一句,如果你在Visual Studio宏中这样做,我相信VS提供了一些对象,可以在没有IL解析的情况下使用。
我认为你的代码应该是
public void Method1()
{
Method2();
}
public void Method2()
{
StackTrace stackTrace = new StackTrace();
string name = stackTrace.GetFrame(0).GetMethod().Name;
Console.WriteLine(name);
//do something
}
Test test = new Test();
test.Method1(); // write "Method1"