Freigeben über


Interoperabilitätswarnungen

Interoperabilitätswarnungen unterstützen die Interaktion mit COM-Clients.

In diesem Abschnitt

Regel

Beschreibung

CA1400: Für P/Invoke müssen Einstiegspunkte vorhanden sein

Eine öffentliche oder geschützte Methode wird mit dem System.Runtime.InteropServices.DllImportAttribute-Attribut markiert.Entweder konnte die nicht verwaltete Bibliothek nicht gefunden werden, oder die Methode konnte keiner Funktion in der Bibliothek zugeordnet werden.

CA1401: P/Invokes dürfen nicht sichtbar sein

Eine öffentliche oder geschützte Methode in einem öffentlichen Typ enthält das System.Runtime.InteropServices.DllImportAttribute-Attribut (in Visual Basic auch durch das Declare-Schlüsselwort implementiert).Solche Methoden sollten nicht verfügbar gemacht werden.

CA1402: Überladungen in für COM sichtbaren Schnittstellen vermeiden

Wenn für COM-Clients überladene Methoden verfügbar gemacht werden, behält nur die erste Methodenüberladung ihren Namen.Nachfolgende Überladungen werden eindeutig umbenannt, indem dem Namen ein Unterstrich (_) und eine ganze Zahl angefügt werden, die der Reihenfolge der Deklaration der Überladung entspricht.

CA1403: Typen mit automatischem Layout sollten nicht für COM sichtbar sein

Ein für COM sichtbarer Werttyp wird mit dem auf LayoutKind.Auto festgelegten System.Runtime.InteropServices.StructLayoutAttribute-Attribut markiert.Das Layout dieser Typen kann zwischen den verschiedenen .NET Framework-Versionen voneinander abweichen. Dies führt zu Fehlern in COM-Clients, die ein bestimmtes Layout erwarten.

CA1404: GetLastError unmittelbar nach P/Invoke aufrufen

Die Marshal.GetLastWin32Error-Methode oder die entsprechende GetLastError-Win32-Funktion wird aufgerufen, und unmittelbar zuvor wird keine Plattformaufrufmethode aufgerufen.

CA1405: Für COM sichtbare Basistypen sollten für COM sichtbar sein

Ein für COM sichtbarer Typ wird von einem Typ abgeleitet, der nicht für COM sichtbar ist.

CA1406: Int64-Argumente für Visual Basic 6-Clients vermeiden

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

CA1407: Statische Member in für COM sichtbaren Typen vermeiden

COM unterstützt keine statischen Methoden.

CA1408: AutoDual ClassInterfaceType nicht verwenden

Typen, die eine duale Schnittstelle verwenden, ermöglichen Clients die Bindung an ein bestimmtes Schnittstellenlayout.Änderungen an einer zukünftigen Version des Layouts des Typs oder eines Basistyps führen zur Aufhebung der Verbindung zu COM-Clients, die eine Bindung zu der Schnittstelle haben.Standardmäßig wird eine auf Dispatch beschränkte Schnittstelle verwendet, wenn das ClassInterfaceAttribute-Attribut nicht angegeben wird.

CA1409: Für COM sichtbare Typen müssen erstellt werden können

Ein Verweistyp, der speziell als für COM sichtbar gekennzeichnet ist, enthält einen öffentlichen parametrisierten Konstruktor, jedoch keinen öffentlichen (parameterlosen) Standardkonstruktor.Ein Typ ohne einen öffentlichen Standardkonstruktor kann nicht von COM-Clients erstellt werden.

CA1410: Die COM-Registrierungsmethoden müssen übereinstimmen

Ein Typ deklariert eine mit dem System.Runtime.InteropServices.ComRegisterFunctionAttribute-Attribut markierte Methode, aber keine mit dem System.Runtime.InteropServices.ComUnregisterFunctionAttribute-Attribut markierte Methode oder umgekehrt.

CA1411: Die COM-Registrierungsmethoden dürfen nicht sichtbar sein

Eine mit dem System.Runtime.InteropServices.ComRegisterFunctionAttribute-Attribut oder dem System.Runtime.InteropServices.ComUnregisterFunctionAttribute-Attribut markierte Methode ist extern sichtbar.

CA1412: ComSource-Schnittstellen als IDispatch markieren

Ein Typ ist mit dem System.Runtime.InteropServices.ComSourceInterfacesAttribute-Attribut markiert, und mindestens eine der angegebenen Schnittstellen ist nicht mit dem auf ComInterfaceType.InterfaceIsIDispatch festgelegten System.Runtime.InteropServices.InterfaceTypeAttribute-Attribut markiert.

CA1413: Nicht öffentliche Felder in für COM sichtbaren Werttypen vermeiden

Nicht öffentliche Instanzenfelder von COM-sichtbaren Werttypen sind für COM-Clients sichtbar.Überprüfen Sie den Inhalt der Felder auf Informationen, die nicht verfügbar gemacht werden sollen oder unbeabsichtigte Auswirkungen auf Design oder Sicherheit haben.

CA1414: Boolesche P/Invoke-Argumente mit MarshalAs markieren

Der boolesche Datentyp verfügt über mehrere Darstellungen in nicht verwaltetem Code.

CA1415: P/Invokes korrekt deklarieren

Diese Regel sucht nach Deklarationen für Plattformaufrufmethoden, die Win32-Funktionen mit einem Zeiger auf einen OVERLAPPED-Strukturparameter zum Ziel haben, der zugehörige verwaltete Parameter ist jedoch kein Zeiger auf eine System.Threading.NativeOverlapped-Struktur.