Я думаю, что это история типа фабрики / провайдера, но я не знаю, как описать мою проблему.Это выглядит так.
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 )
Но я не могу понять, как это сделать, так как нет никакого общего интерфейса для приведения.
Мне не повезло или есть способ справиться с этим типом проблемы?