Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
| 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