【问题标题】:Roslyn changing node referencesRoslyn 更改节点引用
【发布时间】:2015-01-24 03:44:55
【问题描述】:

因为节点是不可变的,并且每次创建新实例时,我的引用都会变得陈旧。处理这个问题的最佳方法是什么?我正在重构以将类定义上移一级。首先我将它添加到祖父节点,但是我对类定义节点的引用已经过时,我无法使用它。

var nodeExpression
var nodeMethod
var nodeClassDef

当我修改nodeExpression 时,会生成一个全新的世界;我怎样才能快速获得nodeMethodnodeClassDef 在那个新世界中的匹配节点?

【问题讨论】:

  • @eric-lippert 或许您可以就此提供一些建议

标签: roslyn


【解决方案1】:

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

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

【讨论】:

  • 非常感谢您的回答。这很有帮助。据我了解,跟踪节点是通过注释实现的。
猜你喜欢
  • 2017-10-27
  • 1970-01-01
  • 1970-01-01
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多