Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Word与多个版本的互操作_C#_.net_Ms Word_Interop - Fatal编程技术网

C# Word与多个版本的互操作

C# Word与多个版本的互操作,c#,.net,ms-word,interop,C#,.net,Ms Word,Interop,我希望使用Office互操作在一个应用程序中支持所有Office套件 通过使用CreateObject(),我可以在Visual Basic中实现这一点? 问题是我无法看到前面的函数,必须在文档之间来回切换才能完成(由于使用了Object) 如果我使用工厂模式,并为每个版本的Office都有一个实现,它会工作吗 例如: Factory->ABaseOffice GetImplementation(string office_version) 返回由Office2000和OfficeXP实

我希望使用Office互操作在一个应用程序中支持所有Office套件

通过使用
CreateObject()
,我可以在Visual Basic中实现这一点? 问题是我无法看到前面的函数,必须在文档之间来回切换才能完成(由于使用了
Object

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

例如:

Factory->ABaseOffice GetImplementation(string office_version)
返回由
Office2000
OfficeXP
实现的
ABaseOffice
的实例

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


我不想走这条路。

是的-理论上这是可行的。。。问题是您肯定不能在同一个项目中引用互操作DLL的不同版本。。。因此,对于
ABaseOffice
接口的实现,您仍然必须使用后期绑定方法

更新-根据评论:

理论上,所描述的选项(请参阅)将允许添加这些引用。。。不这样做的几个原因:

  • 这是两个以上版本的互操作DLL
  • DLL名称与IIRC相同(这造成了一个本文中未解决的问题!)
  • 结果真的很难理解/维护/调试

为什么他不能引用interop DLL的不同版本?