Controlando a formatação de saída de código da CodEmodel: colocando linhas entre as declarações de namespace
-
27-09-2019 - |
Pergunta
Estou fazendo algumas experiências com o CodEmodel do Visual Studio. Tentei criar um arquivo com dois espaços de nome por meio do modelo de código do VS:
CodeModel codeModel = projItem.ContainingProject.CodeModel;
codeModel.AddNamespace("Namespaces.FirstNamespace", "namespacestest.cs");
codeModel.AddNamespace("Namespaces.SecondNamespace", "namespacestest.cs");
A saída desse código é:
//file namespacestest.cs
namespace Namespaces.FirstNamespace {
}
namespace Namespaces.SecondNamespace {
}
Qual é quase O que estou olhando. O único problema aqui é que eu gostaria de controlar o espaçamento: ter pelo menos uma linha entre o primeiro e o segundo espaço para nome. Por acaso alguém conhece uma maneira de conseguir isso?
É isso que eu quero:
//file namespacestest.cs
namespace Namespaces.FirstNamespace {
}
namespace Namespaces.SecondNamespace {
}
Obrigado
Solução
A declaração codeModel.AddNamespace
devolverá um objeto de codenamespace. Você pode encontrar o ponto de edição do espaço para nome usando o seu primeiro espaço para nome e, em seguida, inserir uma linha como essa.
CodeNamespace yournamespace = codeModel.AddNamespace(....);
EditPoint2 endEditPoint = yournamespace.GetEndPoint(vsCMPart.vsCMPartWhole).CreateEditPoint();
endEditPoint.InsertNewLine(1);
Não tenho certeza se isso colocará a linha no local que você deseja, mas a idéia é obter o Edit Point e depois usá -la para inserir a linha.