CA1406: Int64-Argumente für Visual Basic 6-Clients vermeiden.
Element | Wert |
---|---|
RuleId | CA1406 |
Category | Microsoft.Interoperability |
Unterbrechende Änderung | Breaking |
Ursache
Ein Typ, der speziell als sichtbar für das Component Object Model (COM) gekennzeichnet ist, deklariert einen Member, der ein System.Int64-Argument akzeptiert.
Hinweis
Diese Regel wurde als veraltet markiert. Weitere Informationen finden Sie unter Veraltete Regeln.
Regelbeschreibung
Visual Basic 6-COM-Clients können nicht auf 64-Bit-Ganzzahlen zugreifen.
Standardmäßig sind für COM folgende Elemente sichtbar: Assemblys, öffentliche Typen, Member öffentlicher Instanzen in öffentlichen Typen und alle Member von öffentlichen Werttypen. Um falsch positive Ergebnisse zu reduzieren, erfordert diese Regel jedoch, dass die COM-Sichtbarkeit des Typs explizit angegeben wird. Die enthaltende Assembly muss mit auf false
festgelegtem System.Runtime.InteropServices.ComVisibleAttribute gekennzeichnet sein, und der Typ muss mit auf true
festgelegtem ComVisibleAttribute gekennzeichnet sein.
Behandeln von Verstößen
Um einen Verstoß gegen diese Regel für einen Parameter zu beheben, dessen Wert immer als 32-Bit-Ganzzahl ausgedrückt werden kann, ändern Sie den Parametertyp in System.Int32. Wenn der Wert des Parameters größer sein kann, als er durch eine 32-Bit-Ganzzahl ausgedrückt werden kann, ändern Sie den Parametertyp in System.Decimal. Beachten Sie, dass sowohl bei System.Single als auch bei System.Double die Genauigkeit in den oberen Bereichen des Datentyps Int64 verloren geht. Wenn der Member nicht für COM sichtbar sein soll, markieren Sie ihn mit dem auf false
festgelegten ComVisibleAttribute.
Wann sollten Warnungen unterdrückt werden?
Sie können eine Warnung aus dieser Regel gefahrlos unterdrücken, wenn sicher ist, dass Visual Basic 6-COM-Clients nicht auf den Typ zugreifen.
Beispiel
Das folgende Beispiel zeigt einen Typ, der gegen die Regel verstößt.
using System;
using System.Runtime.InteropServices;
[assembly: ComVisible(false)]
namespace InteroperabilityLibrary
{
[ComVisible(true)]
public class SomeClass
{
public void LongArgument(long argument) {}
}
}
Ähnliche Regeln
CA1413: Nicht öffentliche Felder in für COM sichtbaren Werttypen vermeiden.
CA1407: Statische Member in für COM sichtbaren Typen vermeiden.
CA1017: Assemblys mit ComVisibleAttribute markieren.
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für