2013-10-14 2 views
0

현재 NRefactory가있는 프로젝트를 진행하고 있습니다. 우리는 .cs 파일에서 'Class'및 'Interface'와 같은 typedeclaration을 필터링하고 있습니다. 이 typedeclarations를 사용자 정의 네임 스페이스에 배치하려고하지만 어떤 이유로 작동하지 않습니다. 누구든지이 문제를 도와 줄 수 있습니까?NRefactory가 typedeclaration에 네임 스페이스를 추가합니다.

나는 다음과 같은 코드를 시도했다 :

typeDeclaration.Parent.InsertChildBefore(typeDeclaration, ns, new Role<NamespaceDeclaration>("customNamespace")); 
+0

"작동하지 않는다"는 것은 무엇을 의미합니까? 그것은 무엇을 하는가? 나는 * 당신이 가지고있는 코드가'class C {} '를 네임 스페이스 customNamespace {} class C {}'로 바꾸었을 것이라고 생각한다. – svick

+0

사실 그게 내가 원하는 .. 아니, 내가 사용하는 경우 : ToString() 전체 네임 스페이스 특성이 누락되어 있으므로 삽입되지 않았습니다. – Mittchel

답변

1

내가 TypeDeclaration 전에 네임 스페이스 노드 를 삽입 한 번도 안 써봤. 대신 네임 스페이스를 먼저 추가 한 다음 TypeDeclaration을 추가했습니다.

public static void AddChildTypeDeclaration(
     this AstNode tree, 
     TypeDeclaration newClass, 
     NamespaceDeclaration parentNamespace = null) 
    { 
     if (null != parentNamespace) 
     { 
      var newNamespaceNode = new NamespaceDeclaration(
       parentNamespace.Name); 

      newNamespaceNode.AddMember(newClass); 

      tree.AddChild(newNamespaceNode, SyntaxTree.MemberRole); 
     } 
     else 
     { 
      tree.AddChild(newClass, Roles.TypeMemberRole); 
     } 
    } 
관련 문제