Share via


CA1852: Försegla interna typer

Property Värde
Regel-ID CA1852
Rubrik Försegla interna typer
Kategori Prestanda
Korrigeringen är icke-bakåtkompatibel Icke-icke-bryta
Introducerad version .NET 7
Aktiverad som standard i .NET 8 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.

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.