Utilisation de types COM dans du code managé

Les types COM qui sont définis dans un assembly ressemblent à tous les autres types managés. Les clients managés peuvent créer une nouvelle instance d'un type COM selon la manière habituelle et obtenir des informations sur la classe via les métadonnées comme ils le feraient pour toute autre classe managée. La syntaxe de la méthode peut être inspectée via un explorateur d'objets et être obtenue à l'aide de la réflexion, de la même manière qu'avec toute autre classe managée. Lorsque l'objet COM retourne un HRESULT d'échec, le client .NET Framework intercepte une exception correspondante.

Il existe deux façons pour votre application d'inclure les informations de type qui permettent l'interopérabilité avec les types COM :

  • En utilisant des types interop incorporés : en commençant par le .NET Framework 4, vous pouvez instruire le compilateur pour incorporer les informations de type d'un assembly d'interopérabilité dans votre fichier exécutable. Le compilateur incorpore uniquement les informations de type utilisées par votre application. Vous n'avez pas à déployer l'assembly d'interopérabilité avec votre application. Il s'agit de la technique recommandée.

  • En déployant des assemblys d'interopérabilité : vous pouvez créer une référence standard à un assembly d'interopérabilité. Dans ce cas, l'assembly d'interopérabilité doit être déployé avec votre application. Si vous utilisez cette technique et que vous n'utilisez pas un composant COM privé, référencez toujours l'assembly PIA publié par l'auteur du composant COM que vous prévoyez d'incorporer dans votre code managé. Pour plus d'informations sur la production et l'utilisation d'assemblys d'interopérabilité, consultez Assemblys PIA (Primary Interop Assembly).

Notes

Lorsque vous utilisez des types interop incorporés, vous pouvez les incorporer à l'assembly PIA (Primary Interop Assembly) publié par l'auteur du composant COM.Toutefois, vous n'avez pas à déployer l'assembly PIA avec votre application.

L'utilisation de types interop incorporés réduit la taille de votre application, parce que la plupart des applications n'utilisent pas toutes les fonctionnalités d'un composant COM. Le compilateur est très efficace lorsqu'il incorpore les informations de type ; si votre application utilise uniquement certaines des méthodes sur une interface COM, le compilateur n'incorpore pas les méthodes inutilisées. Lorsqu'une application qui a incorporé les informations de type interagit avec une autre application du même type, ou interagit avec une application qui utilise un assembly PIA (Primary Interop Assembly), le Common Language Runtime utilise des règles d'équivalence du type pour déterminer si deux types avec le même nom représentent le même type COM.

L'obtention et la libération d'une référence à un objet COM en cours d'exécution reviennent à obtenir et à libérer une référence à tout autre objet managé en cours d'exécution. Lorsque les clients .NET Framework obtiennent et libèrent une référence vers un objet COM, le runtime conserve le décompte de références sur l'objet COM comme le ferait tout autre client COM, et les clients .NET Framework peuvent se comporter comme si l'objet était soumis au garbage collection, juste comme ils le seraient dans le cas de tout autre objet serveur managé.

Visual Studio facilite l'incorporation des informations de type dans une application ou un complément. Pour obtenir des exemples, consultez Procédure pas à pas : incorporation d'informations de type provenant d'assemblys Microsoft Office (C# et Visual Basic) et Procédure pas à pas : incorporation de types provenant d'assemblys managés (C# et Visual Basic).

Pour obtenir des exemples de code en rapport avec les rubriques de cette section, consultez Exemple COM Interop : client .NET et serveur COM.

Les règles pour l'équivalence de type sont discutées dans Équivalence de type et types interop incorporés. Toutefois, vous n'avez pas à connaître ces règles pour utiliser des objets COM.

Voir aussi

Tâches

Procédure pas à pas : incorporation d'informations de type provenant d'assemblys Microsoft Office (C# et Visual Basic)

Procédure pas à pas : incorporation de types provenant d'assemblys managés (C# et Visual Basic)

Concepts

Exposition de composants COM au .NET Framework

Inspection d'un assembly à la recherche de types COM

Activation d'un objet COM

Appels de méthodes, de propriétés et d'événements

Wrappers COM

Autres ressources

Considérations de design pour l'interopérabilité