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