Simulation d'interfaces COM

Le wrapper pouvant être appelé par COM (CCW) expose tous les types de données, interfaces visibles par COM et valeurs de retour publics aux clients COM d'une manière conforme à l'application par COM de l'interaction reposant sur l'interface. Pour un client COM, l'appel de méthodes sur un objet .NET Framework est identique à l'appel de méthodes sur un objet COM.

Pour créer cette approche transparente, le wrapper CCW fabrique des interfaces COM classiques, telles que IUnknown et IDispatch. Ainsi que le montre l'illustration suivante, le wrapper CCW contient une référence unique à l'objet .NET qu'il enveloppe. Le client COM et l'objet .NET interagissent ensemble via la construction proxy/stub du wrapper CCW.

Interfaces COM et le wrapper pouvant être appelé par COM

Interfaces COM

Outre l'exposition des interfaces qui sont implémentées explicitement par une classe dans l'environnement managé, le .NET Framework fournit des implémentations des interfaces COM répertoriées dans le tableau suivant pour le compte de l'objet. Une classe .NET peut substituer le comportement par défaut par sa propre implémentation de ces interfaces. Cependant, le runtime fournit toujours l'implémentation pour les interfaces IUnknown et IDispatch.

Interface Description

Idispatch

Fournit un mécanisme pour la liaison tardive au type.

IerrorInfo

Fournit une description textuelle de l'erreur, sa source, un fichier d'aide, un contexte d'aide et le GUID de l'interface ayant défini l'erreur (toujours GUID_NULL pour les classes .NET).

IprovideClassInfo

Active les clients COM pour obtenir l'accès à l'interface ITypeInfo implémentée par une classe managée.

IsupportErrorInfo

Permet à un client COM de déterminer si l'objet managé prend en charge l'interface IErrorInfo. Le cas échéant, permet au client d'obtenir un pointeur désignant le dernier objet exception. Tous les types managés prennent en charge l'interface IErrorInfo.

ItypeInfo

Fournit à une classe des informations de type qui sont exactement identiques aux informations de type produites par Tlbexp.exe.

Iunknown

Fournit l'implémentation standard de l'interface IUnknown avec laquelle le client COM gère la durée de vie du wrapper CCW et fournit la contrainte de type.

Une classe managée peut également fournir les interfaces COM décrites dans le tableau suivant.

Interface Description

L'interface de classe (_nomclasse)

Interface, exposée par le runtime et non définie explicitement, qui expose tous les champs, interfaces, méthodes et propriétés publics qui sont exposés explicitement sur un objet managé.

IConnectionPoint et IConnectionPointContainer

Interface pour les objets qui émettent des événements basés sur les délégués (une interface pour l'inscription des abonnés d'événements).

IdispatchEx

Interface fournie par le runtime si la classe implémente IExpando. L'interface IDispatchEx est une extension de l'interface IDispatch ; mais, contrairement à l'interfaceIDispatch, elle active l'énumération, l'ajout, la suppression et l'appel (sensible à la casse) de membres.

IEnumVARIANT

Interface pour les classes de type collection, qui énumère les objets dans la collection si la classe implémente IEnumerable.

Voir aussi

Concepts

Wrapper pouvant être appelé par COM
Présentation de l'interface de classe
Exposition de composants .NET Framework à COM