Roslyn - 访问 MethodSymbol 中所有使用的类型

Roslyn - Access all used Types within a MethodSymbol

我目前有一个 IMethodSymbol 正在访问中,现在我想获取此方法中所有使用的类型。也就是说

问题是,如果 roslyn 支持这个非常优雅 API,或者我是否必须遍历语法树并自行搜索信息?

通过 CSharpSyntaxWalker 访问您从变量声明和调用表达式中收集符号的方法体,这很容易实现。虽然不是单行代码,但它应该是一个相当短的 class 实现,带有两个重载方法。

有两点需要注意:您首先需要通过 DeclaringSyntaxReferencesIMethodSymbol 获取语法树才能访问语法树。您可以通过首先从 Compilation 获取该语法树的 SemanticModel 并查询相应的符号来从表达式中获取各种符号。