Поделиться через


Маршалинг выбранных интерфейсов

Обновлен: Ноябрь 2007

Основная цель вызываемой оболочки времени выполнения — скрыть различия между управляемыми и неуправляемыми моделями программирования. Чтобы обеспечить гладкий переход, вызываемая оболочка времени выполнения использует выбранные COM-интерфейсы, не предоставляя доступа к ним клиенту .NET, как показано на следующем рисунке.

COM-интерфейсы и вызываемая оболочка времени выполнения
RCW с интерфейсами

Вызываемая оболочка времени выполнения, если она создается как объект с ранним связыванием, является особым типом. Она реализует интерфейсы, реализуемые COM-объектом, и предоставляет доступ к доступным методам, свойствам и событиям из интерфейсов объекта. На рисунке вызываемая оболочка времени выполнения предоставляет доступ к интерфейсу INew, для чего она использует интерфейсы IUnknown и IDispatch. Кроме того, вызываемая оболочка времени выполнения предоставляет клиенту .NET доступ ко всем членам интерфейса INew.

Вызываемая оболочка времени выполнения использует перечисленные в следующей таблице интерфейсы, предоставляемые инкапсулированным в эту оболочку объектом.

Интерфейс

Описание

IDispatch

Для позднего связывания с COM-объектами с помощью отражения.

IErrorInfo

Предоставляет текстовое описание ошибки, ее источник, файл справки, контекстную справку и значение GUID интерфейса, определившего ошибку (для классов .NET — всегда GUID_NULL).

IProvideClassInfo

Если инкапсулируемый COM-объект реализует интерфейс IProvideClassInfo, вызываемая оболочка времени выполнения извлекает из этого интерфейса сведения о типе, чтобы добиться большей идентичности типов.

IUnknown

Для обеспечения идентификации объектов, приведения типов и управления временем жизни объекта:

  • Идентификация объектов

    Среда выполнения отличает COM-объекты друг от друга, сравнивая значение интерфейса IUnknown для каждого объекта.

  • Приведение типов

    Вызываемая оболочка времени выполнения распознает динамическое обнаружение типов, выполняемое методом QueryInterface.

  • Управление временем жизни объекта

    С помощью метода QueryInterface вызываемая оболочка времени выполнения получает и сохраняет ссылку на неуправляемый объект, пока среда выполнения не выполнит для оболочки сбор мусора, освобождая неуправляемый объект.

Вызываемая оболочка времени выполнения может использовать перечисленные в следующей таблице интерфейсы, предоставляемые инкапсулируемым в оболочку объектом.

Интерфейс

Описание

IConnectionPoint и IConnectionPointContainer

Вызываемая оболочка времени выполнения преобразует объекты, предоставляющие событиям на основе делегата доступ к стилю события точки подключения.

IDispatchEx

Если класс реализует интерфейс IDispatchEx, вызываемая оболочка времени выполнения реализует интерфейс IExpando. Интерфейс IDispatchEx является расширением интерфейса IDispatch, который, в отличие от интерфейса IDispatch, позволяет осуществлять перечисление, добавление, удаление и вызов членов с учетом регистра.

IEnumVARIANT

Активирует COM-типы, позволяющие работать с перечислениями, как с коллекциями.

См. также

Основные понятия

Вызываемая оболочка времени выполнения

Уточнение типов .NET для взаимодействия

Другие ресурсы

Резюме преобразования сборки в библиотеку типов