Qualification des types .NET en vue d'une interopérabilitéQualifying .NET Types for Interoperation

Si vous envisagez d’exposer les types d’un assembly à des applications COM, prenez en compte les exigences COM Interop au moment de la conception.If you intend to expose types in an assembly to COM applications, consider the requirements of COM interop at design time. Les types managés (classe, interface, structure et énumération) s’intègrent parfaitement aux types COM lorsque vous respectez les consignes suivantes :Managed types (class, interface, structure, and enumeration) seamlessly integrate with COM types when you adhere to the following guidelines:

  • Les classes doivent implémenter les interfaces de manière explicite.Classes should implement interfaces explicitly.

    Même si COM Interop fournit un mécanisme permettant de générer automatiquement une interface contenant tous les membres de la classe et de sa classe de base, il est fortement recommandé de fournir des interfaces explicites.Although COM interop provides a mechanism to automatically generate an interface containing all members of the class and the members of its base class, it is far better to provide explicit interfaces. L’interface générée automatiquement est appelée « interface de classe ».The automatically generated interface is called the class interface. Pour connaître les instructions, consultez présentation de l’interface de classe.For guidelines, see Introducing the class interface.

    Vous pouvez utiliser Visual Basic, c# et C++ pour incorporer des définitions d’interface dans votre code, au lieu de devoir utiliser le langage IDL (Interface Definition) ou son équivalent.You can use Visual Basic, C#, and C++ to incorporate interface definitions in your code, instead of having to use Interface Definition Language (IDL) or its equivalent. Pour plus d’informations sur la syntaxe, consultez la documentation relative à votre langage.For syntax details, see your language documentation.

  • Les types managés doivent être publics.Managed types must be public.

    Seuls les types publics d’un assembly sont inscrits et exportés vers la bibliothèque de types.Only public types in an assembly are registered and exported to the type library. Par conséquent, seuls les types publics sont visibles par COM.As a result, only public types are visible to COM.

    Les types managés exposent des fonctionnalités à un autre code managé qui peut ne pas être exposé à COM.Managed types expose features to other managed code that might not be exposed to COM. Par exemple, les constructeurs paramétrables, les méthodes statiques et les champs constants ne sont pas exposés aux clients COM.For instance, parameterized constructors, static methods, and constant fields are not exposed to COM clients. De plus, comme le runtime marshale les données d’un type à un autre, les données peuvent être copiées ou transformées.Further, as the runtime marshals data in and out of a type, the data might be copied or transformed.

  • Les méthodes, les propriétés, les champs et les événements doivent être publics.Methods, properties, fields, and events must be public.

    Les membres des types publics doivent également être publics pour être visibles par COM.Members of public types must also be public if they are to be visible to COM. Vous pouvez restreindre la visibilité d’un assembly, d’un type public ou de membres publics d’un type public en appliquant ComVisibleAttribute.You can restrict the visibility of an assembly, a public type, or public members of a public type by applying the ComVisibleAttribute. Par défaut, tous les membres et types publics sont visibles.By default, all public types and members are visible.

  • Les types doivent avoir un constructeur public par défaut pour être activés dans COM.Types must have a public default constructor to be activated from COM.

    Les types publics managés sont visibles par COM.Managed, public types are visible to COM. Toutefois, sans constructeur public par défaut (constructeur sans arguments), les clients COM ne peuvent pas créer le type.However, without a public default constructor (a constructor with no arguments), COM clients cannot create the type. Les clients COM peuvent toujours utiliser le type s’il est activé par d’autres moyens.COM clients can still use the type if it is activated by some other means.

  • Les types ne peuvent pas être abstraits.Types cannot be abstract.

    Ni les clients COM ni les clients .NET ne peuvent créer de types abstraits.Neither COM clients nor .NET clients can create abstract types.

Lors de l’exportation vers COM, la hiérarchie d’héritage d’un type managé est aplatie.When exported to COM, the inheritance hierarchy of a managed type is flattened. Le contrôle de version est également différent dans les environnements managés et non managés.Versioning also differs between managed and unmanaged environments. Les types exposés à COM n’ont pas les mêmes caractéristiques de contrôle de version que les autres types managés.Types exposed to COM do not have the same versioning characteristics as other managed types.

Voir aussiSee Also

ComVisibleAttribute
Exposition de composants .NET Framework à COMExposing .NET Framework Components to COM
Présentation de l’interface de classeIntroducing the class interface
Application d’attributs d’interopérabilitéApplying Interop Attributes
Empaquetage d'un assembly pour COMPackaging an Assembly for COM