我正在尝试学习如何使用Roslyn,而且我一直遇到很多障碍,需要弄清楚如何解决问题。目前,专注于尝试以了解可能的方法。
void Method1(){}
void Method2()
{
Method1();
}
void Method3()
{
Method2();
}
如果我想检查Method2是否调用Method1,这很简单,因为我只看它的语法树。据我了解,如果我正在查看Method3并想找到Method2,则应该使用语义树,因为Method2可能位于不同的文件/名称空间/等文件中。
我的问题是,如果我只有Method2的IMethodSymbol,是否有任何方法可以找出Method2是否调用Method1?
谢谢你的帮助
最佳答案
如果我正确理解您的知识,那么您会知道如何从MethodDeclarationSyntax
换为Method3
到IMethodSymbol
以及从Method2
换为MethodDeclarationSyntax
到Method2
,但是您不知道如何获取从Method1
到IMethodSymbol
到Method2
到MethodDeclarationSyntax
。
为此,您可以使用Method2
:
var method2Syntax = symbol.DeclaringSyntaxReferences.Single().GetSyntax();
关于c# - Roslyn-找出被调用的方法是否调用方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43291957/