Word Interop с несколькими версиями - PullRequest
2 голосов
/ 03 ноября 2011

Я хочу поддерживать все пакеты Office в одном приложении, используя Office Interop.

Я смог сделать это в Visual Basic, используя CreateObject()? Проблема заключалась в том, что я не мог видеть функции заранее и мне приходилось прыгать между документами, чтобы сделать это (из-за использования Object).

Если бы я использовал фабричный шаблон и имел реализацию для каждой версии Office, это сработало бы?

Пример:

Factory->ABaseOffice GetImplementation(string office_version)

Возвращает экземпляр ABaseOffice, который реализован Office2000 и OfficeXP.

Таким образом, если выходит новая версия Office, мне просто нужно написать специальный код для нее и не беспокоиться о предыдущих версиях или зависеть от программного обеспечения сторонних производителей.

Я не хочу следовать по маршруту COM / Interop - поддержка нескольких версий .

1 Ответ

5 голосов
/ 03 ноября 2011

да - теоретически это работает ... проблема в том, что вы определенно не можете ссылаться на разные версии Interop-DLL в одном проекте ... поэтому вам все равно придется использовать подход позднего связывания для реализацийABaseOffice интерфейса

ОБНОВЛЕНИЕ - согласно комментариям:

Теоретически описанный вариант (см. http://blogs.msdn.com/b/ansonh/archive/2006/09/27/774692.aspx) позволит добавить эти ссылки ... по нескольким причинам, по которымсделайте так:

  • это гораздо больше, чем 2 версии Interop DLL
  • имя DLL это тот же IIRC (что создает проблему, не рассматриваемую в этой статье!)
  • результат будет действительно трудно понять / поддерживать / отлаживать
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...