Я работаю над проектом, в котором мне нужно вызвать неуправляемый COM-объект в проекте C # .net. В этой ссылке я обнаружили, что для вызова COM-объекта в .net необходимо иметь RC Wrapper для этого объекта. Итак, мне просто любопытно узнать, единственный ли это способ продолжить? или Есть ли у нас другой способ вызвать COM-объект в .NET?
Является ли RCW (Runtime Callable Wrapper) единственным способом вызова неуправляемого объекта com в .NET?
- Если вы можете выполнить обновление до C # 4.0 (как я предполагаю, вы все еще используете C # 3.0), чтобы получить динамический эффект: msdn.microsoft.com/en-us/magazine/ff714583.aspx 18.07.2014
- Статья, которую вы связали, - полная чушь, она не демонстрирует никакого COM-кода. Обычная проблема с этим сайтом, без значимого обзора. RCW - это деталь реализации, вы никогда не создаете ее явно. 18.07.2014
Ответы:
VS позволяет вам просто добавить ссылку на вашу COM-DLL. Это просто вкладка в диалоговом окне «Добавить ссылку». Для большинства сценариев этот процесс довольно плавный. Он автоматически генерирует для вас полную RCW. Вам не нужно писать какой-либо ручной код.
См. Как: добавить или удалить ссылки с помощью диалогового окна добавления ссылки .
Если вам нужен больший контроль, другой способ - создать класс C ++ / CLI или Managed C ++, который управляет вашим классом COM и вызывает его. Этот управляемый класс C ++ может вызываться по очереди вашим кодом C #. По сути, вы создаете «ручную» оболочку для вашего COM-кода. C ++ / CLI - это гибридный язык, сочетающий в себе элементы управляемого кода .NET и неуправляемого кода C ++.
В этой статье объясняются основы: Быстрый C ++ / CLI - выучите C ++ / CLI менее чем за 10 минут. Вам нужно будет адаптировать его, чтобы добавить обычный код управления жизненным циклом для классов COM.