Megosztás a következőn keresztül:


CA1401: A P/Invokes nem lehet látható

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