2013-10-14 34 views
0

目前我正在使用NRefactory的項目。我們正在過濾類型聲明,如'Class'和'Interface'.cs文件。我們希望將這些類型聲明放置在自定義名稱空間中,但出於某種原因,它不起作用。有人能幫助我解決這個問題嗎?NRefactory爲類型聲明添加命名空間

我試過下面的代碼:

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

你是什麼意思「不工作」?它有什麼作用?我*認爲*你的代碼會將'class C {}'變成'namespace 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); 
     } 
    }