2011-11-03 85 views
2

我想在Office Interop的一个应用程序中支持所有Office套件。Word Interop与多个版本

我能够在Visual Basic中使用CreateObject()来做到这一点吗? 问题是我无法预先看到函数,不得不在文档之间跳转以完成它(由于使用了Object)。

如果我使用工厂模式,并为每个版本的Office都有一个实现,它会工作吗?

实施例:

Factory->ABaseOffice GetImplementation(string office_version) 

返回其由Office2000OfficeXP实现的ABaseOffice一个实例。

这种方式,如果一个新的Office版本出来,我只需要编写它的特定代码,而不是打扰以前的版本或取决于第三方软件。我不想遵循COM/Interop - Supporting Multiple Versions路线。

回答

4

yes - 理论上这可行......问题在于,你绝对不能在同一个项目中引用不同版本的Interop-DLL ......所以你仍然必须使用后期绑定方法在ABaseOffice接口

UPDATE的实现 - 按评论:

在理论所描述的选项(参见http://blogs.msdn.com/b/ansonh/archive/2006/09/27/774692.aspx)将允许添加这些引用......几个理由不这样做:

  • 这些是更多的表达N 2个版本的互操作DLL的
  • DLL名称IST相同IIRC(这对没有解决该文章中!有问题)
  • 的结果将是非常令人费解/维护/调试
+0

为什么能他是否参考了interop dll的不同版本? http://blogs.msdn.com/b/ansonh/archive/2006/09/27/774692.aspx –

+0

不错的发现 - 见我上面的更新... – Yahia