【问题标题】:How to swap two SyntaxNode (Roslyn C#)如何交换两个 SyntaxNode (Roslyn C#)
【发布时间】:2017-04-05 06:00:32
【问题描述】:

我目前正在为 Visual Studio 2015 编写一个重构工具,我想创建一个重构,即重新排序类元素。我的问题:我无法在 SyntaxTree 上交换两个 SyntaxNode。基本的 swap 方法不起作用,因为 SyntaxNode 是引用类型,执行下面的代码后结果是 firstSyntaxNode 的两个副本。

SyntaxNode tmp = firstSyntaxNode;
root = root.ReplaceNode(firstSyntaxNode, secondSyntaxNode);
root = root.ReplaceNode(secondSyntaxNode, tmp);

如何交换两个 SyntaxNode?​​strong>

【问题讨论】:

    标签: c# refactoring roslyn


    【解决方案1】:

    你可以通过调用ReplaceNodes来同时替换两个节点:

    root = root.ReplaceNodes(new[] { firstSyntaxNode, secondSyntaxNode },
        (original, _) => original == firstSyntaxNode ? secondSyntaxNode : firstSyntaxNode);
    

    【讨论】:

      猜你喜欢
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多