【发布时间】:2010-08-05 22:37:53
【问题描述】:
我认为这是一个工厂/供应商类型的故事,但我不确定如何描述我的问题。是这样的。
InstallShield 有一个 COM 自动化接口,每个版本都会更改它的名称。如果是 VBScript 我会说
set project = CreateObject("ISWiAuto15.ISWiProject) ' InstallShield 2009
set project = CreateObject("ISWiAuto16.ISWiProject) ' InstallShield 2010
一旦我有了项目对象,我就可以做类似的事情
project.OpenProject( filePath, readOnly )
在 C# .NET 3.5 中,我添加了我的 COM 引用并执行相同的操作,但现在我与该类紧密耦合。我希望能够做类似的事情
var project = CreateProjectObject( typeof ISWiAutoXX.ISWiProject )
但我不知道如何执行此操作,因为似乎没有任何共享接口可供投射。
是我运气不好还是有办法处理这类问题?
【问题讨论】:
-
在 .NET 4 中,有
dynamic,但在 3.5 上,我相信你搞砸了。 -
我担心你会这么说。我只是构建自动化框架的一小部分,我不打算在短期内使用 .NET 4。
标签: c# .net-3.5 interop com-interop installshield