NRefactory добавить пространство имен в объявление типа

В настоящее время я работаю над проектом с NRefactory. Мы фильтруем объявления типа, такие как "Класс" и "Интерфейс", из файла.cs. Мы хотели бы поместить эти объявления типов в собственное пространство имен, но по какой-то причине это не работает. Кто-нибудь может помочь мне с этой проблемой?

Я пробовал следующий код:

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

1 ответ

Я никогда не пытался вставить узел Namespace до 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);
        }
    }
Другие вопросы по тегам