Маршалинг выбранных интерфейсов
Обновлен: Ноябрь 2007
Основная цель вызываемой оболочки времени выполнения — скрыть различия между управляемыми и неуправляемыми моделями программирования. Чтобы обеспечить гладкий переход, вызываемая оболочка времени выполнения использует выбранные COM-интерфейсы, не предоставляя доступа к ним клиенту .NET, как показано на следующем рисунке.
COM-интерфейсы и вызываемая оболочка времени выполнения
Вызываемая оболочка времени выполнения, если она создается как объект с ранним связыванием, является особым типом. Она реализует интерфейсы, реализуемые COM-объектом, и предоставляет доступ к доступным методам, свойствам и событиям из интерфейсов объекта. На рисунке вызываемая оболочка времени выполнения предоставляет доступ к интерфейсу INew, для чего она использует интерфейсы IUnknown и IDispatch. Кроме того, вызываемая оболочка времени выполнения предоставляет клиенту .NET доступ ко всем членам интерфейса INew.
Вызываемая оболочка времени выполнения использует перечисленные в следующей таблице интерфейсы, предоставляемые инкапсулированным в эту оболочку объектом.
Интерфейс |
Описание |
---|---|
IDispatch |
Для позднего связывания с COM-объектами с помощью отражения. |
IErrorInfo |
Предоставляет текстовое описание ошибки, ее источник, файл справки, контекстную справку и значение GUID интерфейса, определившего ошибку (для классов .NET — всегда GUID_NULL). |
IProvideClassInfo |
Если инкапсулируемый COM-объект реализует интерфейс IProvideClassInfo, вызываемая оболочка времени выполнения извлекает из этого интерфейса сведения о типе, чтобы добиться большей идентичности типов. |
IUnknown |
Для обеспечения идентификации объектов, приведения типов и управления временем жизни объекта:
|
Вызываемая оболочка времени выполнения может использовать перечисленные в следующей таблице интерфейсы, предоставляемые инкапсулируемым в оболочку объектом.
Интерфейс |
Описание |
---|---|
IConnectionPoint и IConnectionPointContainer |
Вызываемая оболочка времени выполнения преобразует объекты, предоставляющие событиям на основе делегата доступ к стилю события точки подключения. |
IDispatchEx |
Если класс реализует интерфейс IDispatchEx, вызываемая оболочка времени выполнения реализует интерфейс IExpando. Интерфейс IDispatchEx является расширением интерфейса IDispatch, который, в отличие от интерфейса IDispatch, позволяет осуществлять перечисление, добавление, удаление и вызов членов с учетом регистра. |
IEnumVARIANT |
Активирует COM-типы, позволяющие работать с перечислениями, как с коллекциями. |
См. также
Основные понятия
Вызываемая оболочка времени выполнения
Уточнение типов .NET для взаимодействия