Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA1401 |
Cím | A P/Invokes nem lehet látható |
Kategória | Együttműködési lehetőség |
A javítás kompatibilitástörő vagy nem törik | Törés |
Alapértelmezés szerint engedélyezve a .NET 9-ben | Javaslatként |
Ok
A nyilvános vagy védett metódusok attribútuma System.Runtime.InteropServices.DllImportAttribute (a Visual Basicben a Declare
kulcsszó is implementálva van).
Szabály leírása
Az attribútummal DllImportAttribute megjelölt metódusok (vagy a Visual Basic kulcsszóval Declare
definiált metódusok) a Platform Invocation Services használatával férnek hozzá a nem felügyelt kódhoz. Ezeket a módszereket nem szabad felfedni. Ezeknek a metódusoknak a privát vagy belső megőrzésével győződjön meg arról, hogy a kódtár nem használható a biztonság megsértésére azáltal, hogy engedélyezi a hívók számára a nem felügyelt API-k elérését, amelyeket egyébként nem tudtak meghívni.
Szabálysértések kijavítása
A szabály megsértésének kijavításához módosítsa a metódus hozzáférési szintjét.
Mikor kell letiltani a figyelmeztetéseket?
Ne tiltsa el a szabály figyelmeztetését.
Példa
Az alábbi példa egy olyan metódust deklarál, amely megsérti ezt a szabályt.
// 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