Freigeben über


Vermeiden von Int64-Argumenten für Visual Basic 6-Clients

Aktualisiert: November 2007

     TypeName

AvoidInt64ArgumentsForVB6Clients

CheckId

CA1406

Kategorie

Microsoft.Interoperability

Unterbrechende Änderung

Breaking

Ursache

Ein Typ, der ausdrücklich als für COM sichtbar markiert ist, deklariert einen Member, der ein System.Int64-Argument akzeptiert.

Regelbeschreibung

Visual Basic 6-COM-Clients können nicht auf 64-Bit-Ganzzahlen zugreifen.

Standardmäßig sind folgende Programmierelemente für COM sichtbar: Assemblys, öffentliche Typen, öffentliche Instanzmember in öffentlichen Typen und alle Member öffentlicher Werttypen. Um jedoch die Anzahl falscher positiver Ergebnisse zu verringern, muss entsprechend der Regel die COM-Sichtbarkeit des Typs explizit angegeben werden, die enthaltende Assembly muss mit dem auf false festgelegten System.Runtime.InteropServices.ComVisibleAttribute-Attribut markiert sein, und der Typ muss mit dem auf true festgelegten ComVisibleAttribute-Attribut markiert sein.

Behandlung von Verstößen

Um einen Verstoß gegen diese Regel für einen Parameter, dessen Wert immer als 32-Bit-Ganzzahl ausgedrückt werden kann, zu beheben, ändern Sie den Parametertyp in System.Int32. Wenn der Wert des Parameters größer sein darf, als mit einer 32-Bit-Ganzzahl ausgedrückt werden kann, ändern Sie den Parametertyp in System.Decimal. Beachten Sie, dass sowohl System.Single als auch System.Double in den oberen Bereichen des Int64-Datentyps an Genauigkeit verlieren. Wenn ein Member nicht für COM sichtbar sein soll, markieren Sie diesen mit dem auf false festgelegten ComVisibleAttribute.

Wann sollten Warnungen unterdrückt werden?

Eine Warnung dieser Regel kann gefahrlos unterdrückt werden, wenn sichergestellt ist, dass keine Visual Basic 6-COM-Clients auf den Typ zugreifen.

Beispiel

Im folgenden Beispiel wird ein Typ veranschaulicht, der gegen die Regel verstößt.

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
using System;
using System.Runtime.InteropServices;

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

Verwandte Regeln

Vermeiden von nicht öffentlichen Feldern in ComVisible-Werttypen

Statische Member in für COM sichtbaren Typen vermeiden

Markieren von Assemblys mit dem ComVisible-Attribut

Siehe auch

Referenz

Long-Datentyp (Visual Basic)

Weitere Ressourcen

Interaktion mit nicht verwaltetem Code