CA1401: P/Invokes mag niet zichtbaar zijn

Eigenschap Waarde
Regel-id CA1401
Titel P/Aanroepen mogen niet zichtbaar zijn
Categorie Interoperabiliteit
Fix kan brekend of niet-brekend zijn Onderbreking
Standaard ingeschakeld in .NET 10 Als suggestie
Toepasselijke talen C# en Visual Basic

Oorzaak

Een openbare of beveiligde methode in een openbaar type heeft het System.Runtime.InteropServices.DllImportAttribute kenmerk (ook geïmplementeerd door het Declare trefwoord in Visual Basic).

Beschrijving van regel

Methoden die zijn gemarkeerd met het DllImportAttribute kenmerk (of methoden die zijn gedefinieerd met behulp van het Declare trefwoord in Visual Basic) maken gebruik van Platform Invocation Services voor toegang tot onbeheerde code. Dergelijke methoden mogen niet worden weergegeven. Door deze methoden privé of intern te houden, moet u ervoor zorgen dat uw bibliotheek niet kan worden gebruikt om de beveiliging te schenden door bellers toegang te geven tot niet-beheerde API's die ze anders niet konden aanroepen.

Hoe schendingen op te lossen

Als u een schending van deze regel wilt oplossen, wijzigt u het toegangsniveau van de methode.

Wanneer waarschuwingen onderdrukken

Een waarschuwing van deze regel niet onderdrukken.

Voorbeeld

In het volgende voorbeeld wordt er een methode gedeclareerd die deze regel schendt.

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