CA1401: I P/Invoke non devono essere visibili
Proprietà | valore |
---|---|
ID regola | CA1401 |
Title | I P/Invoke non devono essere visibili |
Categoria | Interoperabilità |
La correzione causa un'interruzione o meno | Interruzione |
Abilitato per impostazione predefinita in .NET 9 | Come suggerimento |
Causa
Un metodo pubblico o protetto in un tipo pubblico ha l'attributo System.Runtime.InteropServices.DllImportAttribute (implementato anche dalla Declare
parola chiave in Visual Basic).
Descrizione regola
I metodi contrassegnati con l'attributo DllImportAttribute (o i metodi definiti tramite la Declare
parola chiave in Visual Basic) usano Platform Invocation Services per accedere al codice non gestito. Questi metodi non devono essere esposti. Mantenendo questi metodi privati o interni, assicurarsi che la libreria non possa essere usata per violare la sicurezza consentendo ai chiamanti di accedere alle API non gestite che non potevano chiamare altrimenti.
Come correggere le violazioni
Per correggere una violazione di questa regola, modificare il livello di accesso del metodo .
Quando eliminare gli avvisi
Non escludere un avviso da questa regola.
Esempio
Nell'esempio seguente viene dichiarato un metodo che viola questa regola.
// 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