C# 在Visual Studio.Net中创建自定义属性编辑器/生成器

C# 在Visual Studio.Net中创建自定义属性编辑器/生成器,c#,.net,visual-studio,C#,.net,Visual Studio,我有一个应用程序,允许开发人员创建自己的派生子类,并向其中添加预先确定的属性 例如: class MyDocContainer : GenericDocumentContainer { Document docA = new Document("Secret Report on Brocoli Wars"); Document docB = new Document("Who's afraid of Donald Duck"); Document docC = new Document("O

我有一个应用程序,允许开发人员创建自己的派生子类,并向其中添加预先确定的属性

例如:

class MyDocContainer : GenericDocumentContainer {

Document docA = new Document("Secret Report on Brocoli Wars"); 
Document docB = new Document("Who's afraid of Donald Duck");
Document docC = new Document("Out Of Money Experience");

 //rest of code goes here

}
我希望有一个可视化编辑器,允许编辑/添加文档和其他预定义类型的部分类,就像设置设计器一样

这将真正有助于获得派生类的综合视图,并使其更易于维护

理想情况下,我还希望在构造函数或专用init方法等特殊位置为每个属性生成一些相关的代码行


有什么想法吗?

根据您试图实现的目标,如果您希望这尽可能自然,我建议您使用Visual Studio加载项或VSX软件包,访问DTE及其代码模型

如果选择外接程序路径,您可能需要执行以下操作:

从“其他项目类型”菜单中创建外接程序有一个外接程序选项。 创建Windows窗体或Windows使用控件或WPF控件以容纳将要使用的UI。 显示控件或窗体,以便开发人员可以执行其工作。 使用该方法将代码工件添加到解决方案中。 您需要知道的一些事情:

您将需要DTE/DTE2实例,外接程序已经有了它们,但是您可能需要将它们传递到UI,以防您从那里更改代码。 DTE具有Solution属性,该属性表示当前加载的解决方案。您可能希望迭代其项目/项。 每个项目都有实际代码文件中的项目项。 一些项目项具有FileCodeModel。 有了要添加代码工件的项的FileCodeModel,添加编解码器类、CodeFunctin和其他非常简单的东西应该没有问题

请注意:
由于ExtensionBillity框架的COM特性,扩展Visual Studio可能很棘手,因此请务必首先创建一个良好的概念证明。

根据您试图实现的目标,如果您希望尽可能自然,我建议您使用Visual Studio插件或VSX包,访问DTE及其代码模型

如果选择外接程序路径,您可能需要执行以下操作:

从“其他项目类型”菜单中创建外接程序有一个外接程序选项。 创建Windows窗体或Windows使用控件或WPF控件以容纳将要使用的UI。 显示控件或窗体,以便开发人员可以执行其工作。 使用该方法将代码工件添加到解决方案中。 您需要知道的一些事情:

您将需要DTE/DTE2实例,外接程序已经有了它们,但是您可能需要将它们传递到UI,以防您从那里更改代码。 DTE具有Solution属性,该属性表示当前加载的解决方案。您可能希望迭代其项目/项。 每个项目都有实际代码文件中的项目项。 一些项目项具有FileCodeModel。 有了要添加代码工件的项的FileCodeModel,添加编解码器类、CodeFunctin和其他非常简单的东西应该没有问题

请注意: 由于ExtensionBillity框架的COM特性,扩展VisualStudio可能很棘手,因此请确保首先创建一个好的概念证明