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

Я делаю некоторые эксперименты с 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 {
}

Спасибо

1 ответ

Решение

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

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

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

Другие вопросы по тегам