CA1401: Volání nespravovaných kódů by neměla být viditelná

Vlastnost Hodnota
ID pravidla CA1401
Název Volání nespravovaných kódů by neměla být viditelná
Kategorie Vzájemná funkční spolupráce
Oprava způsobující chybu nebo chybu způsobující chybu Narušující
Povoleno ve výchozím nastavení v .NET 8 Jako návrh

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. Když tyto metody zachováte jako soukromé nebo interní, ujistěte se, že knihovnu nelze použít k narušení zabezpečení tím, že volajícím povolíte přístup k nespravovaným rozhraním API, která by jinak nemohla 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