Teilen über


CA1401: P/Invokes dürfen nicht sichtbar sein

Eigenschaft Wert
Regel-ID CA1401
Titel P/Invokes dürfen nicht sichtbar sein.
Kategorie Interoperabilität
Fix führt oder führt nicht zur Unterbrechung Breaking
Standardmäßig in .NET 8 aktiviert Als Vorschlag

Ursache

Eine öffentliche oder geschützte Methode in einem öffentlichen Typ weist das System.Runtime.InteropServices.DllImportAttribute-Attribut auf (wird auch durch das Declare-Schlüsselwort in Visual Basic implementiert).

Regelbeschreibung

Methoden, die mit dem DllImportAttribute-Attribut gekennzeichnet sind (oder Methoden, die in Visual Basic mithilfe des Declare-Schlüsselworts definiert wurden), nutzen Plattform-Invocation-Dienste, um auf nicht verwalteten Code zuzugreifen. Solche Methoden sollten nicht verfügbar gemacht werden. Wenn Sie diese Methoden als privat oder intern aufbewahren, stellen Sie sicher, dass die Bibliothek nicht zum verletzen der Sicherheit verwendet werden kann, indem sie Aufrufern Zugriff auf nicht verwaltete APIs gewähren, die nicht anderweitig aufgerufen werden konnten.

Behandeln von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, ändern Sie die Zugriffsebene der Methode.

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnung dieser Regel.

Beispiel

Im folgenden Beispiel wird eine Methode deklariert, die gegen diese Regel verstößt.

// Violates rule: PInvokesShouldNotBeVisible.
public class NativeMethods
{
    [DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
    public static extern bool RemoveDirectory(string name);
}
Imports System

Namespace ca1401

    ' Violates rule: PInvokesShouldNotBeVisible.
    Public Class NativeMethods
        Public Declare Function RemoveDirectory Lib "kernel32" (
        ByVal Name As String) As Boolean
    End Class

End Namespace