目录
调整宿主
公开对象模型适配器、约定和加载项视图编写加载项协作加载项总结
您知道现在可以使用新的 Microsoft .NET 加载项框架 (System.AddIn) 创建可扩展的 Windows 窗体应用程序吗?在本期专栏中 ,我将修改 ShapeApp 绘图应用程序,以通过加载项框架公开其对象模型。这将 ,我就能够创建出在宿主应用程序上自动执行任务的加载项(自动化加载项)。 另外,我还将讨论此方案以及现有解决方案中的常见问题。
如果您在开始前需要了解有关加载项框架的背景信息,请参阅 CLR 加载项团 队博客上的资源页,网址为 go.microsoft.com/fwlink/?LinkId=117519。您还 可以考虑阅读以前的“CLR 全面透彻解析”专栏中有关加载项框架的 文章。
ShapeApp 是一个可供您使用基本形状进行绘图的绘图应用程序。您可以插入 新形状、随意移动它们、更改其颜色和大小等。它允许您将绘图保存到文件,并 在选项卡中打开多个绘图。在 ShapeApp 中创建的简单绘图,如图 1 所示。
图 1 ShapeApp 的屏幕快照
ShapeApp 由 Visual Studio Tools for Applications (VSTA) 团队开 发,作为示例可用于将 Visual Studio IDE 嵌入到您的应用程序中。该 IDE 可 随后用于为应用程序编写扩展。他们已提供了包含和不包含其可扩展代码的应用 程序版本。在本示例中,我先从基础版本开始,并调整它使其能够与加载项框架 配合使用。
调整宿主
在本部分中,我将调整应用程序以公开其对象模型,该模型与 HTML 中的文 件对象模型 (DOM) 很相似。这样,我就能够创建在应用程序中自动执行任务的 加载项。
调整宿主的第一步是定义宿主将要公开的对象模型(请注意,我还不需要编 写任何代码)。加载项框架的隔离和版本控制功能将对对象模型加以限制。通常 ,对象模型应定义加载项中将使用的但未内置在 .NET Framework 中的所有类型 ;换言之,视图程序集不应该引用除 .NET Framework 程序集以外的任何程序集 。明确禁止使用 MarshalByRefObject 类型。有关允许类型分类的详细信息,请 参阅博客上有关约定的帖子,网址为 go.microsoft.com/fwlink/? LinkId=117520。
图 2 列出了 ShapeApp 对象模型中的类型。此处列出的所有类都存在于宿主 应用程序的内部。稍后我将通过管道公开它们。
图 2 ShapeApp 类型
类型 | 说明 |
ShapeApplication | 主应用程序对象。 |
Drawing | 表示应用程序中绘图的对象。 |
Shape | 表示绘图中形状的对象。 |
DrawingCollection | 绘图对象集合。 |
ShapeCollection | 形状对象集合。 |
EventArgs 相关类型 | 从 System.EventArgs 中派生的几种类型,用于自定义事件参 数。 |