我想使用Office Interop在一个应用程序中支持所有Office套件。
我可以使用CreateObject()
在Visual Basic中执行此操作吗?
问题是我无法预先看到这些功能,不得不在文档之间跳转才能完成(由于Object
被使用)。
如果我使用工厂模式并为每个版本的Office都有一个实现,它会起作用吗?
示例:
Factory->ABaseOffice GetImplementation(string office_version)
返回由ABaseOffice
和Office2000
实现的OfficeXP
实例。
这样一来,如果出现一个新的Office版本,我只需要为它编写特定代码,而不是对以前的版本或第三方软件感到困扰。
答案 0 :(得分:5)
是的 - 理论上这是有效的......问题是你绝对不能在同一个项目中引用不同版本的Interop-DLL ...所以你仍然必须使用后期绑定方法来实现ABaseOffice
界面
更新 - 根据评论:
理论上,所描述的选项(参见http://blogs.msdn.com/b/ansonh/archive/2006/09/27/774692.aspx)将允许添加这些引用......有几个原因不这样做: