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

TypeNameTypeName AvoidInt64ArgumentsForVB6ClientsAvoidInt64ArgumentsForVB6Clients
CheckIdCheckId CA1406CA1406
CategoryCategory Microsoft.InteroperabilityMicrosoft.Interoperability
Modification avec ruptureBreaking Change RuptureBreaking

CauseCause

Un type qui est marqué spécifiquement comme visible pour COM Component Object Model () déclare un membre qui accepte un System.Int64 argument.A type that is specifically marked as visible to Component Object Model (COM) declares a member that takes a System.Int64 argument.

Description de la règleRule description

Les clients COM Visual Basic 6 ne peut pas accéder aux entiers de 64 bits.Visual Basic 6 COM clients cannot access 64-bit integers.

Par défaut, les éléments suivants sont visibles par COM : assemblys, types publics, membres d’instance publics dans les types publics et tous les membres de types valeur publics.By default, the following are visible to COM: assemblies, public types, public instance members in public types, and all members of public value types. Toutefois, pour réduire les faux positifs, cette règle requiert que la visibilité COM du type d’être explicitement spécifié ; l’assembly conteneur doit être marqué avec le System.Runtime.InteropServices.ComVisibleAttribute définie sur false et le type doit être marqué avec le ComVisibleAttribute défini sur true.However, to reduce false positives, this rule requires the COM visibility of the type to be explicitly stated; the containing assembly must be marked with the System.Runtime.InteropServices.ComVisibleAttribute set to false and the type must be marked with the ComVisibleAttribute set to true.

Comment corriger les violationsHow to fix violations

Pour corriger une violation de cette règle pour un paramètre dont la valeur peut toujours être exprimée comme un entier 32 bits, modifiez le type de paramètre System.Int32.To fix a violation of this rule for a parameter whose value can always be expressed as a 32-bit integral, change the parameter type to System.Int32. Si la valeur du paramètre peut être supérieure peut être exprimée comme un entier 32 bits, remplacez le type de paramètre à System.Decimal.If the value of the parameter might be larger than can be expressed as a 32-bit integral, change the parameter type to System.Decimal. Notez que les deux System.Single et System.Double une perte de précision dans les plages supérieures de la Int64 type de données.Note that both System.Single and System.Double lose precision at the upper ranges of the Int64 data type. Si le membre n’est pas destiné à être visible par COM, marquez-le avec le ComVisibleAttribute défini sur false.If the member is not meant to be visible to COM, mark it with the ComVisibleAttribute set to false.

Quand supprimer les avertissementsWhen to suppress warnings

Il est possible de supprimer un avertissement de cette règle s’il est certain que les clients COM Visual Basic 6 n’accèdent pas le type.It is safe to suppress a warning from this rule if it is certain that Visual Basic 6 COM clients will not access the type.

ExempleExample

L’exemple suivant montre un type qui viole la règle.The following example shows a type that violates the rule.

using System;
using System.Runtime.InteropServices;

[assembly: ComVisible(false)]
namespace InteroperabilityLibrary
{
   [ComVisible(true)]
   public class SomeClass
   {
      public void LongArgument(long argument) {} 
   }
}
Imports System
Imports System.Runtime.InteropServices

<Assembly: ComVisibleAttribute(False)>
Namespace InteroperabilityLibrary

   <ComVisibleAttribute(True)> _ 
   Public Class SomeClass

      Public Sub LongArgument(argument As Long)
      End Sub

   End Class

End Namespace

CA1413 : Évitez les champs non publics dans les types valeur visibles par COMCA1413: Avoid non-public fields in COM visible value types

CA1407 : Éviter les membres statiques dans les types visibles par COMCA1407: Avoid static members in COM visible types

CA1017 : Marquez les assemblys avec ComVisibleAttributeCA1017: Mark assemblies with ComVisibleAttribute

Voir aussiSee also