我想使用 Office Interop 在一个应用程序中支持所有 Office 套件。
我可以在 Visual Basic 中使用 CreateObject()
来完成此操作吗?
问题是我无法预先看到这些功能,并且必须在文档之间跳转才能完成它(由于使用了 Object
)。
如果我使用工厂模式并为每个版本的 Office 都有一个实现,它会起作用吗?
示例:
Factory->ABaseOffice GetImplementation(string office_version)
返回由 Office2000
和 OfficeXP
实现的 ABaseOffice
实例。
这样,如果有新的 Office 版本出现,我只需为其编写特定的代码,而不必担心以前的版本或依赖第 3 方软件。
最佳答案
是的 - 理论上这是可行的...问题是您绝对不能在同一项目中引用不同版本的 Interop-DLL...因此您仍然必须使用后期绑定(bind)方法来实现ABaseOffice
界面
更新 - 根据评论:
理论上,所描述的选项(请参阅 http://blogs.msdn.com/b/ansonh/archive/2006/09/27/774692.aspx )将允许添加这些引用...不这样做的几个原因:
- 这些不仅仅是 Interop DLL 的 2 个版本
- DLL 名称与 IIRC 相同(这会带来该文章中 Unresolved 问题!)
- 结果真的很难理解/维护/调试
关于c# - 与多个版本的 Word 互操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7991447/