Marshaling personnalisé

Un marshaleur établit essentiellement une passerelle entre les fonctionnalités de l'ancienne et de la nouvelle interface. Le marshaling personnalisé permet aux clients conçus pour travailler avec une interface ancienne de travailler également avec des serveurs qui implémentent uniquement une interface nouvelle. Le marshaling personnalisé permet également aux clients générés pour travailler avec une interface nouvelle de travailler avec des serveurs qui exposent l'interface ancienne.

Au lieu d'utiliser le marshaleur d'interopérabilité, vous pouvez concevoir un marshaleur personnalisé pour une interface qui introduit un comportement différent en matière de marshaling ou qui expose différemment l'interface au modèle COM (Component Object Model). En utilisant un marshaleur personnalisé, vous pouvez réduire la distinction entre les nouveaux composants .NET Framework et les composants COM existants.

Supposons, par exemple, que vous développiez une interface managée appelée INew. Lorsque cette interface est exposée à COM via un wrapper CCW (COM Callable Wrapper) standard, elle a les mêmes méthodes que l'interface managée et utilise les règles de marshaling intégrées au marshaleur d'interopérabilité. Supposons maintenant qu'une interface COM connue appelée IOld fournisse déjà les mêmes fonctionnalités que l'interface INew. En introduisant un marshaleur personnalisé, vous pouvez fournir une implémentation non managée de l'interface IOld qui délègue simplement les appels à l'implémentation managée de l'interface INew. Le marshaleur personnalisé joue essentiellement un rôle de passerelle entre les interfaces managée et non managée.

Notez que les marshaleurs personnalisés ne sont pas appelés lorsque l'appel est effectué du côté managé vers le côté non managé sur une interface de répartition uniquement.

Rubriques connexes

Titre

Description

Définition du type de marshaling

Explique comment préparer les interfaces impliquées dans l'installation d'un marshaleur personnalisé.

Implémentation de l'interface ICustomMarshaler

Décrit les options de préparation d'un marshaleur personnalisé.

Utilisation d'un marshaleur de remplacement

Décrit comment utiliser l'attribut MarshalAsAttribute pour insérer un marshaleur personnalisé.

Marshaling d'interopérabilité

Décrit le marshaling pour COM Interop et pour l'appel de code non managé.

Référence

System.Runtime.InteropServices.ICustomMarshaler

System.Runtime.InteropServices.MarshalAsAttribute