Partager via


personnaliser des wrappers pouvant être appelés par le runtime

Le Common Language Runtime produit un wrapper RCW (Runtime Callable Wrapper) à partir des métadonnées dans un assembly d'interopérabilité. Contrairement à d'autres assemblys, les assemblys d'interopérabilité sont générés en important des bibliothèques de types. Bien que le processus d'importation produise généralement des assemblys d'interopérabilité exacts, il y a des cas où vous pouvez (ou devez) modifier l'assembly d'interopérabilité pour produire un wrapper RCW personnalisé.

Vous pouvez vouloir personnaliser un wrapper RCW pour plusieurs raisons :

  • Un ou plusieurs types nécessitent des informations de marshaling supplémentaires.

  • Une bibliothèque de types contient plusieurs types spécifiques que le marshaleur ne reconnaît pas.

  • Une large bibliothèque de types peut inclure des types qui ne sont pas nécessaires à une application. Vous pouvez supprimer le besoin de déployer des types superflus en créant un assembly d'interopérabilité à partir du code source managé.

  • Si vous disposez de code source RCW contenant une portion des types dans une large bibliothèque de types, vous n'aurez pas besoin de déployer des types superflus.

Comme le montre l'illustration suivante, vous pouvez importer une bibliothèque de types comme DLL managée sans personnaliser le wrapper (qui apparaît sur la gauche). Ou vous pouvez créer un wrapper personnalisé.

Informations de marshaling dans des bibliothèques de types importées

Importateur de bibliothèque de types

Si vous devez personnaliser le wrapper RCW (Runtime Callable Wrapper) à l'aide d'instructions de marshaling supplémentaires ou différentes, les deux choix suivants s'offrent à vous :

  • Édition d'un assembly d'interopérabilité, rechercher la syntaxe problématique et la remplacer par une autre syntaxe. Cette option est idéale pour les changements de marshaling mineurs.

  • Création manuelle d'un wrapper, basée sur une bibliothèque de types ou un fichier en langage de définition d'interface (IDL, Interface Definition Language) existant. La déclaration manuelle des types COM est une activité difficile nécessitant une connaissance pratique de Type Library Importer (Tlbimp.exe), du comportement par défaut du marshaleur d'interopérabilité, et de COM. Cette approche est idéale lorsque vous disposez d'une bibliothèque entière de types spécifiques ou que vous avez besoin du code source RCW.

Voir aussi

Tâches

Comment : modifier des assemblys d'interopérabilité

Comment : créer manuellement des wrappers

Concepts

Types de données COM

personnaliser des wrappers pouvant être appelés par COM

Autres ressources

marshaler des données avec COM Interop