Я планирую использовать различные объекты, которые отображаются как объекты COM. Чтобы упростить их использование, я хотел бы объединить их как объекты С#. Каков наилучший подход для этого?
Лучший способ доступа к COM-объектам из С#
Ответ 1
Если библиотека уже зарегистрирована, вы можете выполнить следующие шаги, чтобы Visual Studio создала для вас сборку interop:
- Откройте проект Visual Studio.
- Щелкните правой кнопкой мыши на "Ссылки" (прямо под проектом в обозревателе решений) и выберите "Добавить ссылку".
- Выберите вкладку COM.
- Выберите компонент, с которым вы хотите взаимодействовать.
- Выберите "ok".
Это будет класс или набор классов С#, которые переносят весь материал интерфейса COM с обычным классом С#. Затем вы просто используете его, как и любую другую библиотеку С#. Если импорт справки работал хорошо, вы можете исследовать его, как и любую другую ссылку, и методы/structs/classes/константы должны отображаться в этом пространстве имен и intellisense.
Это позволит вам начать, по крайней мере. Если это развертывается в корпоративной среде или в той, которую вы можете контролировать, это может быть все, что вам нужно.
Ответ 2
В этой статье есть хорошая статья из MSDN, в которой объясняется управляемый и неуправляемый код, и вы шаг за шагом шаг за шагом, как это сделать. http://msdn.microsoft.com/en-us/library/ms973800.aspx#
Удачи!
Ответ 3
Вы можете (изначально) просто импортировать ссылку. Если вам требуется больше контроля (или получить ошибки из импорта VS), вы можете использовать tlbimp в windows sdk. Это создаст сборные блоки. Вы можете получить определения классов из метаданных.
EDIT: на самом деле это намного сложнее, если вы хотите работать с 64-разрядным