Задача: Создание инструмента, подобного генератору модели EF, где вы можете вводить таблицы/столбцы/отношения, и он будет генерировать классы моделей. Это плагин для Visual Studio, который работает в VSIX с DTE (среда средств разработки).VSIX DTE - Создать класс, отмеченный как частичный
Я успешно создал абстрактный класс со свойствами. Теперь я хочу создать другой класс в том же файле, который наследуется от абстрактного класса, а также будет отмечен как partial
. Я понятия не имею, как отметить класс как частичный, IntelliSence
не дает никакого подходящего метода/свойства, и поиск в Google/SO/MSDN не дал мне никаких релевантных результатов.
Некоторый код, чтобы получить представление:
ProjectItem File = CreateOrFindClassFile(/*params*/); //Creating project file
if (File != null)
{
var NS = File.FileCodeModel.AddNamespace("ABC"); //Added namespace ABC
string ChildClassName = "Xyz";
string BaseClassName = "XyzBase";
//Generate base abstract class
var BaseClass = NS.AddClass(BaseClassName);
if (BaseClass != null)
{
BaseClass.Access = vsCMAccess.vsCMAccessPublic;
BaseClass.IsAbstract = true;
//some methods to add variables/methods/properties
}
//Generate partial child class
var ChildClass = lNamespace.AddClass(ChildClassName);
if (ChildClass != null)
{
ChildClass.Access = vsCMAccess.vsCMAccessPublic;
ChildClass.AddBase(lBaseClassName);
//TODO: add some code to mark as partial
}
}
Вопрос: Есть ли ООП путь (через DTE класса дерева), чтобы пометить класс как partial
?
Или я вынужден написать класс в виде строки строки:
NS.GetStartPoint(..)
.CreateEditPoint()
.Insert("public partial class Xyz : XyzBase\n{\n}\n");
Примечание: Это работает, но я теряю контроль и объектно-ориентированного подхода к классам.
Edit1: Просто нашел ссылку на EnvDTE partial class keyword
Хороший звонок, он работает, спасибо! знак равно – Tatranskymedved