CA1401: P/Invokes by nemělo být viditelné

Vlastnost Hodnota
ID pravidla CA1401
Název Volání P/Invoke by nemělo být viditelné
Kategorie Vzájemná funkční spolupráce
Oprava, která může být destruktivní nebo nedestruktivní Přerušující
Povoleno ve výchozím nastavení v .NET 10 Jako návrh
Příslušné jazyky C# a Visual Basic

Příčina

Veřejná nebo chráněná metoda ve veřejném typu má System.Runtime.InteropServices.DllImportAttribute atribut (implementovaný také klíčovým slovem Declare v jazyce Visual Basic).

Popis pravidla

Metody označené atributem DllImportAttribute (nebo metodami definovanými pomocí klíčového Declare slova v jazyce Visual Basic) používají službu volání platformy pro přístup k nespravovanému kódu. Tyto metody by neměly být vystaveny. Pokud tyto metody zachováte jako soukromé nebo interní, zajistíte, že nebude možné použít knihovnu k narušení zabezpečení tím, že volajícím umožníte přístup k nespravovaným rozhraním API, která by jinak nemohli volat.

Jak opravit porušení

Chcete-li opravit porušení tohoto pravidla, změňte úroveň přístupu metody.

Kdy potlačit upozornění

Nepotlačujte upozornění na toto pravidlo.

Příklad

Následující příklad deklaruje metodu, která porušuje toto pravidlo.

// 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