【发布时间】:2021-12-19 21:46:17
【问题描述】:
我从给定的SemanticModel 获得了一个IMethodSymbol 对象,但随后意识到该符号缺少对其声明语法的引用。
让我们假设我可以轻松地为任何符号创建尊重 SyntaxTree 对象。
如何“刷新”IMethodSymbol 对象?
这是我目前所拥有的:
IMethodSymbol methodSymbol = ...;
if (methodSymbol.DeclaringSyntaxReferences.Length == 0)
{
var syntaxTree = ...;
var compilation = semanticModel.Compilation.AddSyntaxTrees(syntaxTree);
semanticModel = compilation.GetSemanticModel(semanticModel.SyntaxTree);
methodSymbol = ???;
}
新的semanticModel 对象链接到新的compilation 对象,该对象使用相关的语法树扩展了旧对象。我不想重复我最初用来获取methodSymbol 对象的整个过程。
当然,我应该能够利用我已经从语义模型的另一个实例中获得它的事实。但是怎么做呢?
【问题讨论】:
标签: c# roslyn roslyn-code-analysis