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.