Share via


CA1401: P/Invokes mag niet zichtbaar zijn

Eigenschappen Weergegeven als
Regel-id CA1401
Titel P/Aanroepen mogen niet zichtbaar zijn
Categorie Interoperabiliteit
Oplossing is brekend of niet-brekend Breken
Standaard ingeschakeld in .NET 8 Als suggestie

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.

Schendingen oplossen

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.

Opmerking

In het volgende voorbeeld wordt een methode declareren 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