Предоставление клиентам .NET Compact Framework доступа к компонентам COM
Обновлен: Ноябрь 2007
Начиная с версии 2.0, в платформе .NET Compact Framework можно вызывать объекты COM из управляемого кода. Также можно импортировать библиотеку типов с помощью утилиты Программа импорта библиотек типов (Tlbimp.exe), предоставленной в полной версии .NET Framework, или же можно в Visual Studio добавить в проект ссылку на библиотеку типов. Импортированная библиотека типов также называется сборкой взаимодействия, так как она содержит определения типов COM, описанные в метаданных.
Если память в машинном коде, сначала выделенная в управляемом коде, остается в библиотеке машинного кода после возврата вызова функции машинного кода, то объект библиотеки необходимо закрепить в управляемом коде, чтобы сборщик мусора не передвинул или не собрал его. Для закрепления объекта можно использовать структуру GCHandle.
Управляемый код должен выравнивать типы данных в соответствии с байтовыми границами, называемыми процессом упаковки, указанными для собственной операционной системы.
Существует три задачи для вызова объектов COM из .NET Compact Framework COM.
Создание управляемых определений интерфейсов и типов COM.
Создание ссылок на эти определения из проекта.
Использование определений интерфейсов и типов COM в качестве управляемых типов.
Также можно задать управляемые определения вручную.
Создание ссылок на сборки взаимодействия
Сборки взаимодействия — это импортированные библиотеки типов, содержащие определения типов COM, описанные в метаданных, которые создаются программой импорта библиотеки типов или Visual Studio.
Для создания сборки взаимодействия при построении проекта следует использовать ключ /r: в компиляторах командой строки. При добавлении ссылки на библиотеку типов в Visual Studio это происходит автоматически.
Использование типов COM как управляемых типов
Члены интерфейса по умолчанию добавляются в класс во время импортирования. Вызовы IDispatch и IUnknown, QueryInterface, а также подсчет ссылок COM обрабатываются автоматически. Значения ошибок HRESULT автоматически передаются исключениям.
После импортирования типа COM можно использовать его в задачах программирования, как любой другой управляемый тип, например, следующим образом.
Создавать экземпляры с помощью ключевого слова new (New в Visual Basic).
Перехватывать исключения.
Непосредственно вызывать метод через класс.
Следует избегать выбора между вызовами наподобие IDispatch и IUnknown.
Приводите к требуемым интерфейсам при необходимости.