Лучший способ получить доступ к COM-объектам из C # - PullRequest
32 голосов
/ 11 марта 2009

Я планирую использовать различные объекты, которые выставляются как объекты COM. Чтобы их было проще использовать, я хотел бы обернуть их как объекты C #. Каков наилучший подход для этого?

Ответы [ 3 ]

35 голосов
/ 11 марта 2009

Если библиотека уже зарегистрирована, вы можете выполнить следующие шаги, чтобы Visual Studio сгенерировала сборку взаимодействия для вас:

  • Открыть для вашего проекта Visual Studio.
  • Щелкните правой кнопкой мыши «Ссылки» (прямо под проектом в обозревателе решений) и выберите «Добавить ссылку».
  • Выберите вкладку COM. (Если вы этого не видите, у вас есть тип проекта, который не поддерживает COM.)
  • Выберите компонент, с которым вы хотите взаимодействовать.
  • Выберите «ОК».

Это будет класс или набор классов C #, которые обертывают все содержимое интерфейса COM обычным классом C #. Тогда вы просто используете его как любую другую библиотеку C #. Если импорт ссылки работал хорошо, вы можете исследовать его, как любую другую ссылку, и методы / structs / классы / константы должны отображаться в этом пространстве имен и intellisense.

Это поможет вам начать, по крайней мере. Если это развернуто в корпоративной среде или под вашим контролем, это может быть все, что вам нужно.

8 голосов
/ 11 марта 2009

На эту тему есть хорошая статья от MSDN, в которой объясняется управляемый и неуправляемый код и шаг за шагом рассказывается, как это сделать. http://msdn.microsoft.com/en-us/library/ms973800.aspx#

Веселись!

4 голосов
/ 11 марта 2009

Вы можете (изначально) просто импортировать ссылку. Если вам нужно больше контроля (или вы получаете ошибки при импорте VS), вы можете использовать tlbimp в Windows SDK. Это создаст сборки взаимодействия. Вы можете получить определения классов из метаданных.

РЕДАКТИРОВАТЬ: это на самом деле намного сложнее, если вы хотите работать с 64-битным

...