Word Interop与多个版本

时间:2011-11-03 07:27:39

标签: c# .net ms-word interop

我想使用Office Interop在一个应用程序中支持所有Office套件。

我可以使用CreateObject()在Visual Basic中执行此操作吗? 问题是我无法预先看到这些功能,不得不在文档之间跳转才能完成(由于Object被使用)。

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

示例:

Factory->ABaseOffice GetImplementation(string office_version)

返回由ABaseOfficeOffice2000实现的OfficeXP实例。

这样一来,如果出现一个新的Office版本,我只需要为它编写特定代码,而不是对以前的版本或第三方软件感到困扰。

我不想遵循COM/Interop - Supporting Multiple Versions路线。

1 个答案:

答案 0 :(得分:5)

是的 - 理论上这是有效的......问题是你绝对不能在同一个项目中引用不同版本的Interop-DLL ...所以你仍然必须使用后期绑定方法来实现ABaseOffice界面

更新 - 根据评论:

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

  • 这些是Interop DLL的两个以上版本
  • DLL名称与IIRC相同(这引起了该文章未解决的问题!)
  • 结果很难理解/维护/调试