Share via


CA1852: Interne afdichtingstypen

Eigenschappen Weergegeven als
Regel-id CA1852
Titel Interne typen verzegelen
Categorie Prestaties
Oplossing is brekend of niet-brekend Niet-brekend
Geïntroduceerde versie .NET 7
Standaard ingeschakeld in .NET 9 Nee

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 van toepassing bent op System.Runtime.CompilerServices.InternalsVisibleToAttribute de assembly die wordt geanalyseerd, worden met deze regel geen vlagtypen gemarkeerd die niet standaard zijn gemarkeerd sealed , omdat een veld mogelijk wordt gebruikt door een vriendassembly. Als u de assembly toch wilt analyseren, raadpleegt u Code configureren om te analyseren.

Schendingen oplossen

Markeer het type als sealed (NotInheritable in Visual Basic).

Opmerking

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 Codeanalysewaarschuwingen onderdrukken voor meer informatie.

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

Deze regel is standaard uitgeschakeld als de assembly die wordt geanalyseerd, wordt gebruikt InternalsVisibleToAttribute om de interne symbolen beschikbaar te maken. 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

Deze optie is beschikbaar vanaf .NET 8.