我已经开发了一个VSTO 4.0插件,旨在将我们的业务应用程序集成到Microsoft Word中。在制作插件中编写的代码,是一个迷你框架,我想重新用于微软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) { ... }
}发布于 2013-03-13 01:51:36
如果在实现令人满意的泛化所需的应用程序层次结构级别上找不到公共接口,那么至少有两个甚至更多的选项可供选择。
第一个选项是实现并为策略定义自己的接口。一旦这样做,您就可以编码到策略接口的定义中,然后在每个策略类中编写word、excel、power-point等类型特定的逻辑。一旦您有了所有的策略类,您就可以实现一个来获得您正在寻找的代码重用。
第二种选择是在函数的参数中使用更泛型的类型对象,比如接口和类型对象引用。一旦这样做了,您就可以利用.net框架中的反射类对特定对象进行类型检查,然后处理每种特定情况。
最后,在研究这些替代方案或任何其他替代方案之前,我建议您真正深入研究msdn文档,以了解.net的office互操作性框架的整体体系结构,看看是否存在您可以进行的有效概括和现有的代码重用模式。我也知道,后期绑定在整个框架中被广泛使用,这可能是一个很好的起点。这里有一些额外的参考资料。
享受吧!
发布于 2013-03-13 01:40:30
听起来您正在寻找Adapter模式。
另一种方法可能是让您的框架通过您自己的一组类以抽象和通用的方式处理它所做的事情。然后有两种不同的渲染内容的策略(两个独立的渲染器,一个用于Word,一个用于Powerpoint)。
https://stackoverflow.com/questions/15367860
复制相似问题