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