Управление форматированием выходного кода CodeModel:ввод строк между объявлениями пространства имен

StackOverflow https://stackoverflow.com/questions/2845752

Вопрос

Я провожу несколько экспериментов с CodeModel от Visual Studio.Я попытался создать файл с двумя пространствами имен с помощью модели кода VS:

CodeModel codeModel = projItem.ContainingProject.CodeModel;
codeModel.AddNamespace("Namespaces.FirstNamespace", "namespacestest.cs");
codeModel.AddNamespace("Namespaces.SecondNamespace", "namespacestest.cs");

результатом такого кода является:

//file namespacestest.cs
namespace Namespaces.FirstNamespace {
}
namespace Namespaces.SecondNamespace {
}

Который является почти то, что я ищу.Единственная загвоздка здесь в том, что я хотел бы контролировать интервал:наличие хотя бы одной строки между первым и вторым пространствами имен.Случайно, кто-нибудь не знает о способе достижения этого?

Это то, чего я хочу:

//file namespacestest.cs
namespace Namespaces.FirstNamespace {
}

namespace Namespaces.SecondNamespace {
}

Спасибо

Это было полезно?

Решение

Заявление codeModel.AddNamespace вернет вам объект с кодовым именем.вы можете найти точку редактирования пространства имен, используя ваше первое пространство имен, а затем вставить строку, подобную этой.

CodeNamespace yournamespace = codeModel.AddNamespace(....);
EditPoint2 endEditPoint = yournamespace.GetEndPoint(vsCMPart.vsCMPartWhole).CreateEditPoint();
endEditPoint.InsertNewLine(1);

Я не уверен, поместит ли это строку в нужное вам место, но идея состоит в том, чтобы получить точку редактирования, а затем использовать ее для вставки строки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top