Implémentation de l'interface ICustomMarshaler

Mise à jour : novembre 2007

Pour utiliser un marshaleur personnalisé, vous devez appliquer l'attribut MarshalAsAttribute au paramètre ou au champ marshalé. L'attribut identifie le marshaleur personnalisé qui active le wrapper approprié.

Le marshaleur personnalisé implémente l'interface ICustomMarshaler afin de fournir les wrappers appropriés au runtime, en créant le marshaleur personnalisé la première fois qu'un argument doit être marshalé. Il appelle les méthodes MarshalNativeToManaged et MarshalManagedToNative sur le marshaleur personnalisé afin d'activer le wrapper approprié pour la gestion de l'appel. Le tableau suivant décrit chaque méthode exposée par l'interface ICustomMarshaler.

Méthode de l'interface

Description

MarshalNativeToManaged

Retourne un wrapper RCW (Runtime Callable Wrapper) personnalisé et capable de marshaler l'interface non managée passée en tant qu'argument. Le marshaleur doit retourner une instance du wrapper RCW personnalisé pour ce type.

MarshalManagedToNative

Retourne un wrapper CCW (COM Callable Wrapper) personnalisé et capable de marshaler l'interface managée passée en tant qu'argument. Le marshaleur doit retourner une instance du wrapper CCW personnalisé pour ce type.

CleanUpNativeData

Fournit une opportunité pour le marshaleur personnalisé d'effectuer tout nettoyage nécessaire du wrapper retourné par la méthode MarshalManagedToNative.

CleanUpManagedData

Fournit une opportunité pour le marshaleur personnalisé d'effectuer tout nettoyage nécessaire du wrapper retourné par la méthode MarshalNativeToManaged.

GetInstance

Extrait une instance du marshaleur personnalisé. Cette méthode statique peut soit créer une nouvelle instance du marshaleur personnalisé chaque fois, soit utiliser toujours la même si le marshaleur personnalisé est dépourvu d'état. La méthode est appelée par le service marshaling pour créer le marshaleur chaque fois qu'un paramètre ou qu'un champ est marqué avec UnmanagedType.CustomMarshaler.

Voir aussi

Concepts

Définition du type de marshaling

Utilisation d'un marshaleur de remplacement

Autres ressources

Marshaling personnalisé