2017-04-04 8 views
1

私は現在ビジュアルスタジオ2015のリファクタリングツールを作成していますが、リオーダクラス要素であるリファクタリングを作成したいと考えています。私の問題:SyntaxTreeで2つのSyntaxNodeを交換できません。 SyntaxNodeは参照型であり、結果は下のコードの実行後にfirstSyntaxNodeの2つのコピーであるため、基本スワップメソッドは機能しません。SyntaxNode(Roslyn C#)の交換方法

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

どのように2つのSyntaxNodeを交換できますか?あなたは何ができるか

答えて

0

ReplaceNodesを呼び出すことによって、同時に両方のノードを交換することである。

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

ありがとう、それは完璧に動作します! – Ezayex

関連する問題