2017-04-04 9 views
1

저는 현재 Visual Studio 2015 용 리팩토링 도구를 작성 중이고 reorder class element를 만드는 리팩토링을 만들고 싶습니다. 내 문제 : SyntaxTree에서 두 SyntaxNode를 바꿀 수 없습니다. SyntaxNode가 참조 형식이기 때문에 기본 스왑 메서드가 작동하지 않으며 결과는 아래 코드 실행 후 firstSyntaxNode의 두 복사본입니다.2 개의 스왑 방법 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