CA1401: P/Invokes bör inte visas
Property | Värde |
---|---|
Regel-ID | CA1401 |
Title | P/Invokes bör inte vara synliga |
Kategori | Samverkan |
Korrigeringen är icke-bakåtkompatibel | Brott |
Aktiverad som standard i .NET 9 | Som förslag |
Orsak
En offentlig eller skyddad metod i en offentlig typ har System.Runtime.InteropServices.DllImportAttribute attributet (även implementerat av nyckelordet Declare
i Visual Basic).
Regelbeskrivning
Metoder som är markerade med DllImportAttribute attributet (eller metoder som definieras med nyckelordet Declare
i Visual Basic) använder Plattformsanropstjänster för att få åtkomst till ohanterad kod. Sådana metoder bör inte exponeras. Genom att hålla dessa metoder privata eller interna ser du till att biblioteket inte kan användas för att bryta mot säkerheten genom att ge anropare åtkomst till ohanterade API:er som de inte kunde anropa på annat sätt.
Så här åtgärdar du överträdelser
Om du vill åtgärda ett brott mot den här regeln ändrar du metodens åtkomstnivå.
När du ska ignorera varningar
Ignorera inte en varning från den här regeln.
Exempel
I följande exempel deklareras en metod som bryter mot den här regeln.
// 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