Partager via


Marshaling d'interfaces sélectionnées

L'objectif principal du wrapper pouvant être appelé par le runtime (RCW) est de masquer les différences existant entre les modèles de programmation managés et non managés. Pour créer une transition transparente, le wrapper RCW consomme des interfaces COM sélectionnées sans les exposer au client .NET, comme le montre l'illustration suivante.

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

RCW avec interfaces

Lorsqu'il est créé en tant qu'objet à liaison anticipée, le wrapper RCW correspond alors à un type spécifique. Il implémente les interfaces que l'objet COM implémente et expose les méthodes, propriétés et événements à partir des interfaces de l'objet. Dans l'illustration, le wrapper RCW expose l'interface INew mais consomme les interfaces IUnknown et IDispatch. De plus, le wrapper RCW expose tous les membres de l'interface INew au client .NET.

Le wrapper RCW consomme les interfaces répertoriées dans le tableau suivant, qui sont exposées par l'objet qu'il enveloppe.

Interface Description

IDispatch

Pour la liaison tardive aux objets COM via la réflexion.

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

Si l'objet COM qui est enveloppé implémente IProvideClassInfo, le wrapper RCW extrait les informations de type à partir de cette interface afin de fournir une meilleure identité de type.

IUnknown

Pour l'identité de l'objet, la contrainte de type et le management de la durée de vie :

  • Identité de l'objet

    Le runtime distingue les objets COM en comparant la valeur de l'interface IUnknown de chaque objet.

  • Contrainte de type

    Le wrapper RCW reconnaît la découverte de type dynamique exécutée par la méthode QueryInterface.

  • Management de la durée de vie

    À l'aide de la méthode QueryInterface, le wrapper RCW obtient et conserve une référence à un objet non managé jusqu'à ce que le runtime exécute une opération garbage collection sur le wrapper, qui libère l'objet non managé.

Le wrapper RCW consomme facultativement les interfaces répertoriées dans le tableau suivant, qui sont exposées par l'objet qu'il enveloppe.

Interface Description

IConnectionPoint et IConnectionPointContainer

Le wrapper RCW convertit les objets qui exposent le style d'événement point de connexion en événements reposant sur les délégués.

IDispatchEx

Si la classe implémente IDispatchEx, le wrapper RCW 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

Active les types COM qui prennent en charge les énumérations devant être traitées en tant que collections.

Voir aussi

Concepts

Wrapper pouvant être appelé par le runtime
Qualification des types .NET en vue d'une interopérabilité

Autres ressources

Résumé de la conversion d'un assembly en bibliothèque de types