Application d'attributs d'interopérabilité

L’espace de noms System.Runtime.InteropServices propose trois catégories d’attributs spécifiques à l’interopérabilité : ceux que vous appliquez au moment du design, ceux que les interfaces API et les outils de COM Interop appliquent au cours du processus de conversion et ceux que vous appliquez ou que COM Interop applique.

Si vous n’êtes pas habitué aux tâches relatives à l’application d’attributs à du code managé, consultez Extension des métadonnées à l’aide des attributs. Comme pour les autres attributs personnalisés, vous pouvez appliquer des attributs spécifiques à l’interopérabilité à des types, à des méthodes, à des paramètres, à des propriétés, à des champs et à d’autres membres.

Attributs au moment du design

Vous pouvez ajuster le résultat du processus de conversion effectué par les interfaces API et les outils de 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 de COM Interop peuvent également parfois appliquer les attributs décrits dans ce tableau.

Attribut Description
AutomationProxyAttribute Indique si le type doit être marshalé en utilisant Automation Marshaler ou un proxy et 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 de COM Interop appliquent généralement cet attribut.
ComImportAttribute Indique qu’une définition d’interface ou de coclasse 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 interdit au type d’être de nouveau exporté vers une bibliothèque de types.

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

Les outils de COM Interop peuvent appliquer cet attribut.
ComUnregisterFunctionAttribute Indique qu’une méthode doit être appelée quand l’inscription de l’assembly dans COM est annulée, de sorte que le code écrit par l’utilisateur puisse s’exécuter au cours du processus.
ComVisibleAttribute Rend les types invisibles à COM quand l’attribut a la valeur false. Cet attribut peut être appliqué à un type individuel ou à l’intégralité de l’assembly pour contrôler la visibilité COM. Par défaut, tous les types publics managés sont visibles ; l’attribut n’est pas nécessaire pour les rendre visibles.
DispIdAttribute Spécifie l’identificateur de répartition COM (DISPID) d’une méthode ou d’un champ. Cet attribut contient le DISPID de la méthode, du champ ou de la propriété qu’il décrit.

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

Les outils de COM Interop peuvent appliquer cet attribut.
FieldOffsetAttribute Indique la position physique de chaque champ dans une classe en cas d’utilisation avec StructLayoutAttribute et d’affectation d’Explicit à LayoutKind.
GuidAttribute Spécifie l’identificateur global unique (GUID) d’une classe, d’une interface ou d’une bibliothèque de types toute entière. La chaîne doit être passée à l’attribut sous la forme d’un argument de constructeur acceptable pour le type System.Guid.

Les outils de COM Interop peuvent appliquer cet attribut.
IDispatchImplAttribute Indique l’implémentation d’interface IDispatch utilisée par le common language runtime lors de l’exposition d’interfaces Dual et de dispinterfaces à COM.
InAttribute Indique que des données doivent être marshalées dans l’appelant. Peut s’utiliser pour attribuer des paramètres.
InterfaceTypeAttribute Contrôle le mode d’exposition d’une interface managée à des clients COM (Dual, dérivée d’IUnknown ou IDispatch uniquement).

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

Les outils de COM Interop peuvent appliquer cet attribut.
MarshalAsAttribute Indique le mode de marshaling des données figurant dans des champs ou des paramètres entre du code managé et non managé. L’attribut est toujours facultatif, car chaque type de données possède un comportement de marshaling par défaut.

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

Les outils de COM Interop peuvent appliquer cet attribut.
OutAttribute Indique que les données d’un champ ou d’un paramètre doivent être remarshalées depuis 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é. Cet attribut affecte le marshaling ainsi que l’exportation des bibliothèques de types.

Les outils de COM Interop peuvent appliquer cet attribut.
ProgIdAttribute Spécifie le ProgID d’une classe .NET. Peut s’utiliser pour attribuer des classes.
StructLayoutAttribute Contrôle la disposition physique des champs d’une classe.

Les outils de COM Interop peuvent appliquer cet attribut.

Attributs d’outils de conversion

Le tableau suivant décrit les attributs que les outils de COM Interop appliquent au cours du processus de conversion. Vous n’appliquez pas ces attributs au moment du design.

Attribut Description
ComAliasNameAttribute Indique l’alias COM pour un type de paramètre ou de champ. Peut s’utiliser pour attribuer des paramètres, champs ou valeurs de retour.
ComConversionLossAttribute Indique que des informations sur une classe ou une interface ont été perdues lors de leur importation 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