Добавление in-proc объекта COM-сервера в приложение C # - PullRequest
1 голос
/ 07 августа 2010

Я новичок в COM и мне нужно добавить объект COM сервера в мое приложение c #, чтобы я мог вызывать его методы и реализовывать события. В документации, которую я имею, сказано, что для этого требуется язык, поддерживающий COM, такой как Visual C ++. Мое приложение написано на C #, поэтому я не уверен, как это будет работать. Любое направление будет оценено.

Я пишу приложение, которое связывается с последовательным терминалом гиперкома. Устройство поставляется с DLL (интерфейс com-сервера), который мне нужно будет выяснить, как использовать в моем приложении c #.

Я добавил ссылку на DLL в свой проект, который отображается как библиотека типов. В проводнике объектов я получаю интерфейсы, некоторые классы и т. Д.

Спасибо, Мэтт

Ответы [ 2 ]

1 голос
/ 07 августа 2010

Вы можете добавить объект COM в качестве ссылки. .NET создаст сборку взаимодействия для работы с COM-объектом, точно так же, как это был тип .NET.

0 голосов
/ 07 августа 2010
  1. CComObjectRoot может использоваться в качестве базового класса для всех COM-объектов, реализованных с помощью ATL. Таким образом, вам не нужно беспокоиться о реализации чего-то подобного в C #, необходимые методы (AddRef, Release, QueryInterface) будут сгенерированы tlbexp для классов, которые помечены ClassInterface .
  2. STDMETHODIMP - это определение, которое служит для объявления наиболее распространенных методов, которые могут быть вызваны из COM (#define STDMETHODIMP HRESULT STDMETHODCALLTYPE). Опять же, если ваш класс помечен ClassInterface, вам не о чем беспокоиться.
  3. Такая конструкция требуется в C ++, когда ваш класс реализует несколько интерфейсов. Я думаю, что это не требуется, если вы сообщаете компилятору C #, что ваш объект C # реализует IDispatch, IFPESOlementationEvents. Соответствующий код будет написан автоматически компилятором.

Вероятно, все не будет иметь особого смысла, если вы новичок в COM и C #, я предлагаю взглянуть на различные введения, которые вы можете найти в Интернете, такие как this .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...