具有多个版本的Word互操作

Koe*_*box 2 .net c# interop ms-word

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

我能够在Visual Basic中通过使用CreateObject()?问题是我无法预先看到这些功能,而不得不在文档之间跳转以完成它(由于Object被使用)。

如果我使用工厂模式并为每个版本的Office都实现了,那么它将起作用吗?

例:

Factory->ABaseOffice GetImplementation(string office_version)
Run Code Online (Sandbox Code Playgroud)

返回ABaseOfficeOffice2000和实现的实例OfficeXP

这样,如果出现了新的Office版本,我只需要为其编写特定的代码,而不必担心以前的版本或依赖于第三方软件。

我不想遵循COM / Interop-支持多种版本的路线。

Yah*_*hia 5

是的-从理论上讲这是可行的...问题是您绝对不能在同一项目中引用Interop-DLL的不同版本...因此您仍将必须使用后期绑定方法来实现ABaseOffice接口

更新-根据评论:

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

  • 这些远远超过2个版本的Interop DLL
  • DLL名称与同一IIRC(这引起了本文未解决的问题!)
  • 结果真的很难理解/维护/调试