使用反射查找方法的所有引用



我想找到运行时对单个类的所有方法调用的位置。我正在使用反射,但我找不到一种方法来定位它在哪里被使用。例如:

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"

相关内容

  • 没有找到相关文章