CA1852: Försegla interna typer
Property | Värde |
---|---|
Regel-ID | CA1852 |
Title | Försegla interna typer |
Kategori | Prestanda |
Korrigeringen är icke-bakåtkompatibel | Icke-icke-bryta |
Introducerad version | .NET 7 |
Aktiverad som standard i .NET 9 | Nej |
Orsak
En typ som inte är tillgänglig utanför sammansättningen och som inte har några undertyper i den innehållande sammansättningen är inte markerad sealed
(NotInheritable
i Visual Basic).
Regelbeskrivning
När en typ inte är tillgänglig utanför sammansättningen och inte har några undertyper inom dess innehållande sammansättning kan den förseglas på ett säkert sätt. Tätningstyper kan förbättra prestandan. Mer information finns i Analyzer Proposal: Seal internal/private types].
Om du använder System.Runtime.CompilerServices.InternalsVisibleToAttribute den sammansättning som analyseras flaggar den här regeln inte typer som inte är markerade som sealed
standard, eftersom ett fält kan användas av en vänsammansättning. Information om hur du analyserar sammansättningen finns i Konfigurera kod att analysera.
Så här åtgärdar du överträdelser
Markera typen som sealed
(NotInheritable
i Visual Basic).
Exempel
Följande kodfragment visar ett brott mot CA1852:
internal class C
{ }
Class C
End Class
Följande kodfragment åtgärdar överträdelsen:
internal sealed class C
{ }
NotInheritable Class C
End Class
När du ska ignorera varningar
Det är säkert att ignorera en varning om prestanda inte är ett problem.
Ignorera en varning
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.
#pragma warning disable CA1852
// The code that's violating the rule is on this line.
#pragma warning restore CA1852
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none
i konfigurationsfilen.
[*.{cs,vb}]
dotnet_diagnostic.CA1852.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.
Konfigurera kod för analys
Använd följande alternativ för att konfigurera vilka delar av kodbasen som regeln ska köras på.
Du kan konfigurera det här alternativet för bara den här regeln, för alla regler som den gäller för eller för alla regler i den här kategorin (Prestanda) som den gäller för. Mer information finns i Konfigurationsalternativ för kodkvalitetsregel.
Ignorera attributet InternalsVisibleTo
Som standard inaktiveras den här regeln om sammansättningen som analyseras använder InternalsVisibleToAttribute för att exponera dess interna symboler. Om du vill ange att regeln ska köras även om sammansättningen är markerad med InternalsVisibleToAttributelägger du till följande nyckel/värde-par i en .editorconfig-fil i projektet:
dotnet_code_quality.CAXXXX.ignore_internalsvisibleto = true
Det här alternativet är tillgängligt från och med .NET 8.