我想在运行时找到对单个类的所有方法调用的位置。我使用反射,但我找不到一种方法来定位它的使用位置。例如:
public class Test
{
public void Method1()
{
// do something
}
public void Method2()
{
Method2();
}
}
我想在运行时找到Method2调用Method2。有办法吗?
我认为应该有,因为Visual Studio可以通过"查找所有引用"来实现。感谢。
答案 0 :(得分:1)
我想你需要解析你正在查看的方法的方法体,请参阅[^]。它可能会帮助你开始。
顺便说一下,如果你在Visual Studio宏中这样做,我相信VS提供了一些可能在没有IL解析的情况下这样做的对象。
答案 1 :(得分:0)
我认为你的代码应该是
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"