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. |