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 | CA1852 |
| Titel | Interne typen verzegelen |
| Categorie | Prestaties |
| Fix kan brekend of niet-brekend zijn | Niet-brekend |
| Geïntroduceerde versie | .NET 7 |
| Standaard ingeschakeld in .NET 10 | Nee |
| Toepasselijke talen | C# en Visual Basic |
Oorzaak
Een type dat niet toegankelijk is buiten de assembly en geen subtypen in de bijbehorende assembly bevat, is niet gemarkeerd sealed (NotInheritable in Visual Basic).
Beschrijving van regel
Wanneer een type niet toegankelijk is buiten de assembly en geen subtypen heeft binnen de bijbehorende assembly, kan het veilig worden verzegeld. Afdichtingstypen kunnen de prestaties verbeteren. Zie Analyzer Proposal: Seal internal/private types] voor meer informatie.
Als u System.Runtime.CompilerServices.InternalsVisibleToAttribute toepast op de assembly die wordt geanalyseerd, worden door deze regel geen types gemarkeerd die niet als sealed zijn gemarkeerd, omdat een veld mogelijk wordt gebruikt door een bevriende assembly. Als u de assembly toch wilt analyseren, ziet u Code configureren om te analyseren.
Hoe schendingen op te lossen
Markeer het type als sealed (NotInheritable in Visual Basic).
Voorbeeld
In het volgende codefragment ziet u een schending van CA1852:
internal class C
{ }
Class C
End Class
Met het volgende codefragment wordt de schending opgelost:
internal sealed class C
{ }
NotInheritable Class C
End Class
Wanneer waarschuwingen onderdrukken
Het is veilig om een waarschuwing te onderdrukken als de prestaties geen probleem zijn.
Een waarschuwing onderdrukken
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.
#pragma warning disable CA1852
// The code that's violating the rule is on this line.
#pragma warning restore CA1852
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none ervan in op het configuratiebestand.
[*.{cs,vb}]
dotnet_diagnostic.CA1852.severity = none
Zie voor meer informatie Hoe codeanalysewaarschuwingen te onderdrukken.
Code configureren om te analyseren
Gebruik de volgende optie om te configureren op welke onderdelen van uw codebase deze regel moet worden uitgevoerd.
U kunt deze optie configureren voor alleen deze regel, voor alle regels waarop deze van toepassing is, of voor alle regels in deze categorie (prestaties) waarop deze van toepassing is. Zie de configuratieopties voor de codekwaliteitsregel voor meer informatie.
Kenmerk InternalsVisibleTo negeren
Standaard is deze regel uitgeschakeld als de assembly die wordt geanalyseerd InternalsVisibleToAttribute gebruikt om zijn interne symbolen beschikbaar te maken. U kunt de optie ignore_internalsvisibleto instellen om de configuratie te wijzigen. Als u wilt opgeven dat de regel moet worden uitgevoerd, zelfs als de assembly is gemarkeerd met InternalsVisibleToAttribute, voegt u het volgende sleutel-waardepaar toe aan een .editorconfig-bestand in uw project:
dotnet_code_quality.CAXXXX.ignore_internalsvisibleto = true
Notitie
Vervang het XXXX deel van CAXXXX door de id van de toepasselijke regel.
Deze optie is beschikbaar vanaf .NET 8.