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