1

我开发了一个 VSTO 4.0 插件,旨在将我们的业务应用程序集成到 Microsoft Word 中。在制作插件中编写的代码是一个迷你框架,我想将其重新用于 Microsoft PowerPoint 的新插件。主要问题是 Word 和 PowerPoint 接口(例如,Microsoft.Office.Interop.Word.Table 和 Microsoft.Office.Interop.PowerPoint.Table)没有共同的祖先,但我需要为插入、更新、表格和图表等,这些将被标准化以用于 Word 和 PowerPoint 对象。我应该选择什么设计原则/模式?我使用的类示例如下:

 using Word = Microsoft.Office.Interop.Word;

 public class ReportHolder
 {
     public ReportHolder(Word.Document document) { ... }

     public void AddTable(Word.Range range) { ... }
 }
4

2 回答 2

3

听起来您正在寻找适配器模式。

另一种方法可能是让您的框架通过您自己的一组类以抽象和通用的方式处理它的工作。然后有两种不同的渲染内容的策略(两个独立的渲染器,一个用于 Word,一个用于 Powerpoint)。

于 2013-03-12T17:40:29.927 回答
1

如果您无法在应用程序层次结构级别找到实现令人满意的泛化所需的通用接口,那么您至少可以选择两个甚至更多选项。

第一个选项是实现策略模式并为策略定义自己的接口。完成此操作后,您可以对策略接口的定义进行编码,然后在每个策略类中对 word、excel、power-point 等类型的特定逻辑进行编码。一旦您拥有所有策略类,您就可以实现工厂模式以获得您正在寻求的代码重用。

第二种选择是对函数的参数使用更通用的类型对象,例如接口和类型对象引用。完成此操作后,您可以利用 .net 框架中的反射类对特定对象进行类型检查,然后处理每个特定情况。

最后,在查看这些替代方案或其他任何替代方案之前,我建议真正深入研究 msdn 文档以了解 .net 的 office 互操作性框架的整体架构,看看是否有可以进行的有效概括以及现有的代码模式重用。我也知道后期绑定在整个框架中被广泛用于此目的,它可能是一个很好的起点。这里有一些额外的参考资料。

办公解决方案中的后期装订

在 Office 解决方案中编写代码

享受!

于 2013-03-12T17:51:35.823 回答