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


Имитация COM-интерфейсов

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

Вызываемая оболочка COM предоставляет COM-клиентам доступ ко всем открытым COM-видимым интерфейсам, типам данных и возвращаемым значениям, используя средства, совместимые с реализацией средствами COM взаимодействия на основе интерфейсов. Для COM-клиента вызов методов в объекте .NET Framework идентичен вызову методов в COM-объекте.

Для обеспечения такой унификации вызываемая оболочка COM создает традиционные COM-интерфейсы, такие как IUnknown и IDispatch. Как показано на следующем рисунке, вызываемая оболочка COM содержит единственную ссылку на инкапсулируемый в нее объект .NET. И COM-клиент, и объект .NET взаимодействуют друг с другом, используя создание вызываемой оболочкой COM посредника и программной заглушки.

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

.NET Framework не только обеспечивает доступ к интерфейсам, которые явным образом реализуются классом в управляемой среде, но и от имени объекта предоставляет реализации COM-интерфейсов, перечисленных в следующей таблице. Класс .NET может переопределять заданное по умолчанию поведение, предоставляя собственную реализацию этих интерфейсов. Но среда выполнения обязательно предоставляет реализацию интерфейсов IUnknown и IDispatch.

Интерфейс

Описание

IDispatch

Предоставляет механизм позднего связывания с типом.

IErrorInfo

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

IProvideClassInfo

Позволяет COM-клиентам получать доступ к интерфейсу ITypeInfo, реализованному управляемым классом.

ISupportErrorInfo

Позволяет COM-клиенту определить, поддерживает ли управляемый объект интерфейс IErrorInfo. Если интерфейс поддерживается, позволяет клиенту получить указатель на последний по времени объект исключения. Интерфейс IErrorInfo поддерживается всеми управляемыми типами.

ItypeInfo

Предоставляет для класса сведения о типе, которые в точности совпадают со сведениями о типе, предоставленными программой Tlbexp.exe.

IUnknown

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

Управляемый класс также может предоставлять COM-интерфейсы, описанные в следующей таблице.

Интерфейс

Описание

Интерфейс класса (_имя_класса)

Интерфейс, не определенный явным образом и предоставляемый средой выполнения, который обеспечивает доступ ко всем открытым интерфейсам, методам, свойствам и полям, явно предоставляемым в управляемом объекте.

IConnectionPoint и IconnectionPointContainer

Интерфейс для объектов, которые являются источниками событий на основе делегатов (интерфейс для регистрации подписчиков событий).

IDispatchEx

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

IEnumVARIANT

Интерфейс для классов типа "коллекция", в которых перечислены объекты коллекции, если класс реализует интерфейс IEnumerable.

См. также

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

Вызываемая оболочка COM

Введение в интерфейс класса

Предоставление COM-клиентам доступа к компонентам .NET Framework