2017-04-04 72 views
1

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

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

如何交换两个SyntaxNode?

回答

0

你可以做的是通过调用ReplaceNodes以取代在同一时间两个节点:

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

谢谢你,它完美的作品! – Ezayex