Freigeben ü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 zu Unterbrechungen oder bleibt funktionsfähig Eilmeldung
Standardmäßig in .NET 10 aktiviert Als Vorschlag
Anwendbare Sprachen C# und Visual Basic

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.

So beheben Sie Verstöße

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