NRefactory将命名空间添加到typedeclaration

时间:2013-10-14 13:32:33

标签: c# .net reflection codedom nrefactory

目前我正在与NRefactory合作开展一个项目。我们正在过滤.cs文件中的“类”和“接口”等类型声明。我们希望将这些类型的声明放入自定义命名空间,但由于某种原因它无法正常工作。有人能帮我解决这个问题吗?

我尝试过以下代码:

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

1 个答案:

答案 0 :(得分: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);
        }
    }