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