Roslyn 更改节点引用
Roslyn changing node references
因为节点是不可变的,每次创建新实例时我的引用都会过时。处理这个问题的最佳方法是什么?我正在重构以将 class 定义上移一级。首先,我将它添加到祖父节点,但随后我对 class 定义节点的引用已过时,我无法使用它。
var nodeExpression
var nodeMethod
var nodeClassDef
当我修改nodeExpression
时,一个全新的世界就生成了;我怎样才能快速获得新世界中 nodeMethod
和 nodeClassDef
的匹配节点?
看看在更改后要查找的节点上创建 SyntaxAnnotation
s。一种方便的方法是通过 SyntaxNode
.
上的 TrackNodes()
扩展方法
您可以提供节点列表,然后在使用 GetCurrentNodes()
重写后找到它们。
因为节点是不可变的,每次创建新实例时我的引用都会过时。处理这个问题的最佳方法是什么?我正在重构以将 class 定义上移一级。首先,我将它添加到祖父节点,但随后我对 class 定义节点的引用已过时,我无法使用它。
var nodeExpression
var nodeMethod
var nodeClassDef
当我修改nodeExpression
时,一个全新的世界就生成了;我怎样才能快速获得新世界中 nodeMethod
和 nodeClassDef
的匹配节点?
看看在更改后要查找的节点上创建 SyntaxAnnotation
s。一种方便的方法是通过 SyntaxNode
.
TrackNodes()
扩展方法
您可以提供节点列表,然后在使用 GetCurrentNodes()
重写后找到它们。