Roslyn更改节点引用

时间:2015-01-21 12:34:42

标签: roslyn

因为节点是不可变的,每次创建新实例时我的引用都会变得陈旧。处理此问题的最佳方法是什么?我重构了将类定义提升一级。首先我将它添加到祖父节点,但是我对类定义节点的引用是陈旧的,我不能使用它。

var nodeExpression
var nodeMethod
var nodeClassDef

当我修改nodeExpression时,会产生一个全新的世界;如何快速获取nodeMethodnodeClassDef的新世界中的匹配节点?

1 个答案:

答案 0 :(得分:1)

查看在更改后要查找的节点上创建SyntaxAnnotation s。一种方便的方法是通过TrackNodes()上的SyntaxNode扩展方法。

您可以提供节点列表,然后在使用GetCurrentNodes()重写后找到它们。