我目前在访问中有一个IMethodSymbol,现在我想在此方法中获取所有使用的类型。这意味着
问题是,如果roslyn支持这个优雅的API,或者我必须遍历syntaxtree并自己搜索信息?
答案 0 :(得分:1)
使用CSharpSyntaxWalker
访问方法体,从变量声明和调用表达式中收集符号,这很容易实现。虽然不是单行,但它应该是一个相当短的类实现,有两个重载方法。
需要注意两点:首先需要从IMethodSymbol
通过其DeclaringSyntaxReferences
获取语法树,以便能够访问语法树。您可以通过首先从SemanticModel
获取该语法树的Compilation
并查询相应的符号来获取表达式中的各种符号。