Partager via


Avertissements liés à l'interopérabilité

Les avertissements relatifs à l'interopérabilité prennent en charge l'interaction avec les clients COM.

Dans cette section

Règle

Description

CA1400 : Des points d'entrée P/Invoke doivent exister

Une méthode publique ou protégée est marquée avec l'attribut System.Runtime.InteropServices.DllImportAttribute. La bibliothèque non managée n'a pas pu être localisée, ou la méthode n'a pu être mise en correspondance avec aucune fonction de la bibliothèque.

CA1401 : Les P/Invoke ne doivent pas être visibles

Une méthode publique ou protégée dans un type public a l'attribut System.Runtime.InteropServices.DllImportAttribute (également implémenté par le mot clé Declare en Visual Basic). De telles méthodes ne doivent pas être exposées.

CA1402 : Éviter les surcharges dans les interfaces COM visibles

Lorsque les méthodes surchargées sont exposées aux clients COM, seule la première surcharge de méthode conserve son nom. Les surcharges suivantes sont renommées de manière unique par l'ajout d'un trait de soulignement (_) au nom et d'un entier qui correspond à l'ordre de déclaration de la surcharge.

CA1403 : Les types Structurer automatiquement ne doivent pas être visibles par COM

Un type valeur visible par COM est marqué avec l'attribut System.Runtime.InteropServices.StructLayoutAttribute qui a la valeur LayoutKind.Auto. La disposition de ces types peut varier suivant les versions du .NET Framework, ce qui bloque les clients COM qui attendent une disposition spécifique.

CA1404 : Appeler GetLastError immédiatement après P/Invoke

La méthode Marshal.GetLastWin32Error ou la fonction Win32 GetLastError équivalente est appelée, et l'appel immédiatement avant ne constitue pas une méthode d'appel de code non managé.

CA1405 : Les types de base type visibles par COM doivent être visibles par COM

Un type visible par COM dérive d'un type qui n'est pas visible par COM.

CA1406 : Éviter les arguments Int64 pour les clients Visual Basic 6

Les clients COM Visual Basic 6 ne peuvent pas accéder aux entiers de 64 bits.

CA1407 : Éviter les membres statiques dans les types visibles par COM

COM ne prend pas en charge les méthodes statiques.

CA1408 : Ne pas utiliser le paramètre AutoDual ClassInterfaceType

Les types qui utilisent une interface double permettent aux clients de se lier à une disposition d'interface spécifique. Les modifications apportées à une version future de la disposition du type ou des types de base bloquent les clients COM qui se lient à l'interface. Par défaut, si l'attribut ClassInterfaceAttribute n'est pas spécifié, une interface de répartition uniquement est utilisée.

CA1409 : Les types visibles par COM doivent pouvoir être créés

Un type référence marqué spécifiquement comme visible par des clients COM contient un constructeur public paramétré, mais ne contient pas de constructeur public par défaut (sans paramètre). Les clients COM ne peuvent pas créer de type sans constructeur public par défaut.

CA1410 : Les méthodes d'inscription COM doivent être mises en correspondance

Un type déclare une méthode marquée avec l'attribut System.Runtime.InteropServices.ComRegisterFunctionAttribute mais ne déclare pas une méthode marquée avec l'attribut System.Runtime.InteropServices.ComUnregisterFunctionAttribute, ou vice versa.

CA1411 : Les méthodes d'inscription COM ne doivent pas être visibles

Une méthode marquée avec l'attribut System.Runtime.InteropServices.ComRegisterFunctionAttribute ou System.Runtime.InteropServices.ComUnregisterFunctionAttribute est visible de l'extérieur.

CA1412 : Marquer les interfaces ComSource comme IDispatch

Un type est marqué avec l'attribut System.Runtime.InteropServices.ComSourceInterfacesAttribute et au moins une des interfaces spécifiées n'est pas marquée avec l'attribut System.Runtime.InteropServices.InterfaceTypeAttribute ayant la valeur ComInterfaceType.InterfaceIsIDispatch.

CA1413 : Éviter les champs non publics dans les types valeur visibles par COM

Les champs d'instance non publics des types valeur visibles par COM sont visibles par les clients COM. Passez en revue le contenu des champs pour voir les informations qui ne doivent pas être exposées, sinon vous aurez une conception imprévue ou des conséquences sur la sécurité.

CA1414 : Marquer les arguments P/Invoke booléens comme MarshalAs

Le type de données booléen contient plusieurs représentations dans le code non managé.

CA1415 : Déclarer correctement les méthodes P/Invoke

Cette règle recherche des déclarations de méthode d'appel de code non managé qui ciblent des fonctions Win32 présentant un pointeur vers un paramètre de structure OVERLAPPED, et le paramètre managé correspondant n'est pas un pointeur vers une structure System.Threading.NativeOverlapped .