Partager via


Application d’attributs d’interopérabilité

L’espace System.Runtime.InteropServices de noms fournit trois catégories d’attributs spécifiques à l’interopérabilité : ceux appliqués par vous au moment du design, ceux appliqués par les outils et API COM interop pendant le processus de conversion, et ceux appliqués par vous ou COM Interop.

Si vous ne connaissez pas la tâche d’appliquer des attributs au code managé, consultez Extension des métadonnées à l’aide d’attributs. Comme d’autres attributs personnalisés, vous pouvez appliquer des attributs spécifiques à l’interopérabilité aux types, méthodes, propriétés, paramètres, champs et autres membres.

Attributs au moment du design

Vous pouvez ajuster le résultat du processus de conversion effectué par les outils et API COM Interop à l’aide d’attributs au moment du design. Le tableau suivant décrit les attributs que vous pouvez appliquer à votre code source managé. Les outils COM Interop, à l’occasion, peuvent également appliquer les attributs décrits dans ce tableau.

Caractéristique Descriptif
AutomationProxyAttribute Spécifie si le type doit être marshalé à l’aide du marshaler Automation ou d’un proxy et d’un stub personnalisés.
ClassInterfaceAttribute Contrôle le type d’interface généré pour une classe.
CoClassAttribute Identifie le CLSID de la coclasse d’origine importée à partir d’une bibliothèque de types.

Les outils d’interopérabilité COM appliquent généralement cet attribut.
ComImportAttribute Indique qu’une définition de coclasse ou d’interface a été importée à partir d’une bibliothèque de types COM. Le runtime utilise cet indicateur pour savoir comment activer et marshaler le type. Cet attribut empêche l’exportation du type vers une bibliothèque de types.

Les outils d’interopérabilité COM appliquent généralement cet attribut.
ComRegisterFunctionAttribute Indique qu’une méthode doit être appelée lorsque l’assembly est inscrit pour une utilisation à partir de COM, afin que le code écrit par l’utilisateur puisse être exécuté pendant le processus d’inscription.
ComSourceInterfacesAttribute Identifie les interfaces qui sont des sources d’événements pour la classe.

Les outils COM Interop peuvent appliquer cet attribut.
ComUnregisterFunctionAttribute Indique qu'une méthode doit être appelée lorsque l'assembly est désinscrit de COM, afin que le code écrit par l'utilisateur puisse s'exécuter pendant le processus.
ComVisibleAttribute Affiche les types invisibles dans COM lorsque la valeur de l’attribut est false. Cet attribut peut être appliqué à un type individuel ou à un assembly entier pour contrôler la visibilité COM. Par défaut, tous les types publics gérés sont visibles ; l’attribut n’est pas nécessaire pour les rendre visibles.
DispIdAttribute Spécifie l’identificateur de distribution COM (DISPID) d’une méthode ou d’un champ. Cet attribut contient le DISPID pour la méthode, le champ ou la propriété qu’il décrit.

Les outils COM Interop peuvent appliquer cet attribut.
ComDefaultInterfaceAttribute Indique l’interface par défaut d’une classe COM implémentée dans .NET.

Les outils COM Interop peuvent appliquer cet attribut.
FieldOffsetAttribute Indique la position physique de chaque champ dans une classe lorsqu’il est utilisé avec StructLayoutAttribute et que LayoutKind est défini sur Explicit.
GuidAttribute Spécifie l’identificateur global unique (GUID) d’une classe, d’une interface ou d’une bibliothèque de types entière. La chaîne transmise à l’attribut doit être un format qui est un argument de constructeur acceptable pour le type System.Guid.

Les outils COM Interop peuvent appliquer cet attribut.
IDispatchImplAttribute Indique l’implémentation de l’interface IDispatch utilisée par le Common Language Runtime lors de l’exposition d’interfaces doubles et de dispinterfaces à COM.
InAttribute Indique que les données doivent être marshalées vers l’appelant. Peut être utilisé pour les paramètres d’attribut.
InterfaceTypeAttribute Contrôle la façon dont une interface managée est exposée aux clients COM (double, dérivé d’IUnknown ou IDispatch uniquement).

Les outils COM Interop peuvent appliquer cet attribut.
LCIDConversionAttribute Indique qu’une signature de méthode non managée attend un paramètre LCID.

Les outils COM Interop peuvent appliquer cet attribut.
MarshalAsAttribute Indique comment les données dans les champs ou les paramètres doivent être marshalées entre le code managé et non managé. L’attribut est toujours facultatif, car chaque type de données a un comportement de marshaling par défaut.

Les outils COM Interop peuvent appliquer cet attribut.
OptionalAttribute Indique qu’un paramètre est facultatif.

Les outils COM Interop peuvent appliquer cet attribut.
OutAttribute Indique que les données d’un champ ou d’un paramètre doivent être marshalées d’un objet appelé vers son appelant.
PreserveSigAttribute Supprime la transformation de la signature HRESULT ou retval qui s’effectue normalement au cours des appels d’interopérabilité. L’attribut affecte le marshaling ainsi que l’exportation de la bibliothèque de types.

Les outils COM Interop peuvent appliquer cet attribut.
ProgIdAttribute Spécifie le ProgID d’une classe .NET. Peut être utilisé pour les classes d’attributs.
StructLayoutAttribute Contrôle la disposition physique des champs d’une classe.

Les outils COM Interop peuvent appliquer cet attribut.

Attributs d’outils de conversion

Le tableau suivant décrit les attributs que les outils d'interopérabilité COM appliquent pendant le processus de conversion. Vous n’appliquez pas ces attributs au moment du design.

Caractéristique Descriptif
ComAliasNameAttribute Indique l’alias COM d’un paramètre ou d’un type de champ. Peut être utilisé pour attribuer des paramètres, des champs ou des valeurs de retour.
ComConversionLossAttribute Indique que des informations sur une classe ou une interface ont été perdues lorsqu’elles ont été importées d’une bibliothèque de types vers un assembly.
ComEventInterfaceAttribute Identifie l’interface source et la classe qui implémente les méthodes de l’interface d’événement.
ImportedFromTypeLibAttribute Indique que l’assembly a été importé à l’origine à partir d’une bibliothèque de types COM. Cet attribut contient la définition de la bibliothèque de types d’origine.
TypeLibFuncAttribute Contient les FUNCFLAGS qui ont été importés à l’origine pour cette fonction à partir de la bibliothèque de types COM.
TypeLibTypeAttribute Contient les TYPEFLAGS qui ont été importés à l’origine pour ce type à partir de la bibliothèque de types COM.
TypeLibVarAttribute Contient les VARFLAGS qui ont été importés à l’origine pour cette variable à partir de la bibliothèque de types COM.

Voir aussi