Partager via


Vue d'ensemble de l'interopérabilité (Guide de programmation C#)

Mise à jour : Juillet 2008

Cette rubrique décrit les méthodes qui permettent d'activer l'interopérabilité entre le code managé et le code non managé C#.

Appel de code non managé

L'appel de code non managé est un service qui permet à du code managé d'appeler des fonctions non managées implémentées dans des bibliothèques de liens dynamiques (DLL), comme celles figurant dans l'interface Microsoft API Win32. Elle localise et appelle une fonction exportée et marshale ses arguments (entiers, chaînes, tableaux, structures) sur les limites d'interopérabilité si nécessaire.

Pour plus d'informations, consultez Consommation de fonctions DLL non managées et Comment : utiliser l'appel de plate-forme pour lire un fichier son (Guide de programmation C#).

Remarque :

Le Common Language Runtime (CLR) gère l'accès aux ressources système. L'appel de code non managé en dehors du CLR permet de passer outre le mécanisme de sécurité et présente par conséquent un risque de sécurité. Par exemple, le code non managé peut appeler directement des ressources dans le code non managé en contournant les mécanismes de sécurité du CLR. Pour plus d'informations, consultez .NET Framework Security.

C++ Interop

Vous pouvez recourir à l'interopérabilité C++, également connue sous le nom « It Just Works » (IJW), pour encapsuler une classe C++ native et pouvoir l'utiliser dans du code créé en C# ou dans un autre langage .NET Framework. Pour cela, vous devez écrire un code C++ pour encapsuler un composant DLL ou COM natif. Contrairement à d'autres langages .NET Framework, Visual C++ offre une prise en charge de l'interopérabilité qui autorise la présence de code managé et non managé dans la même application, voire même dans le même fichier. Vous pouvez ensuite générer le code C++ à l'aide du commutateur /clr du compilateur pour créer un assembly managé. Il vous suffit enfin d'ajouter une référence à l'assembly dans votre projet C# et d'utiliser les objets encapsulés de la même manière que vous utiliseriez d'autres classes managées.

Pour plus d'informations, consultez Comment : encapsuler une classe native pour une utilisation par C# et Utilisation de l'interopérabilité C++ (PInvoke implicite).

Exposition de composants COM à C#

Vous pouvez exploiter un composant COM à partir d'un projet C#. La procédure généralement employée est la suivante :

  1. Recherchez un composant COM à utiliser et inscrivez-le. Utilisez regsvr32.exe pour inscrire une DLL COM ou annuler son inscription.

  2. Ajoutez une référence au composant COM ou à une bibliothèque de types dans votre projet.

    Au moment où vous ajoutez la référence, Visual Studio utilise l'outil Type Library Importer (Tlbimp.exe) qui utilise une bibliothèque de types comme entrée pour produire en sortie un assembly d'interopérabilité .NET Framework. L'assembly, également appelé « wrapper RCW (Runtime Callable Wrapper) », contient des classes managées et des interfaces qui encapsulent les classes COM et les interfaces qui figurent dans la bibliothèque de types. Visual Studio ajoute au projet une référence à l'assembly généré.

  3. Créez une instance d'une classe définie dans le wrapper RCW. Cette étape crée à son tour une instance de l'objet COM.

  4. Utilisez l'objet comme vous utiliseriez simplement d'autres objets managés. Dès que l'objet est récupéré par l'opération garbage collection, l'instance de l'objet COM est également libérée de la mémoire.

Pour plus d'informations, consultez Exposition de composants COM au .NET Framework.

Exposition de C# à COM

Les clients COM peuvent exploiter des types C# qui ont été exposés en bonne et due forme. Les étapes de base pour l'exposition des types C# sont les suivantes :

  1. Ajoutez des attributs d'interopérabilité au projet C#.

    Vous pouvez rendre un assembly COM visible en modifiant les propriétés du projet Visual C#. Pour plus d'informations, consultez Informations de l'assembly, boîte de dialogue.

  2. Créez une bibliothèque de types COM et inscrivez-la pour l'utilisation de COM.

    Vous pouvez modifier les propriétés du projet Visual C# afin d'inscrire automatiquement l'assembly C# pour COM Interop. Pour créer une bibliothèque de types, Visual Studio utilise l'outil Outil Assembly Registration Tool (Regasm.exe) avec le commutateur de ligne de commande /tlb, ce qui permet d'utiliser un assembly managé en entrée. La bibliothèque de types créée décrit les types public dans l'assembly et ajoute des entrées du Registre afin que les clients COM puissent créer des classes managées. Pour plus d'informations, consultez Comment : inscrire un composant pour COM Interop.

Pour plus d'informations, consultez Exposition de composants .NET Framework à COM et Exemple de classe COM (Guide de programmation C#).

Voir aussi

Concepts

Guide de programmation C#

Autres ressources

Interopération avec du code non managé

Interopérabilité COM avancée

Interopérabilité dans le .NET Compact Framework

Improving Interop Performance

Introduction à COM Interop

Marshaling between Managed and Unmanaged Code

Historique des modifications

Date

Historique

Raison

Juillet 2008

Mise à jour de la documentation pour couvrir d'autres types d'interopérabilité.

Améliorations apportées aux informations.