CA1852: Uszczelnij typy wewnętrzne

Właściwości Wartość
Identyfikator reguły CA1852
Stanowisko Uszczelnienie typów wewnętrznych
Kategoria Wydajność
Poprawka powodująca niezgodność lub niezgodność Niezgodność
Wprowadzona wersja .NET 7
Domyślnie włączone na platformie .NET 8 Nie.

Przyczyna

Typ, który nie jest dostępny poza zestawem i nie ma podtypów w ramach zestawu zawierającego zestaw, nie jest oznaczony sealed (NotInheritable w Visual Basic).

Opis reguły

Jeśli typ nie jest dostępny poza zestawem i nie ma podtypów w zestawie zawierającym go, można go bezpiecznie zapieczętować. Typy uszczelniające mogą zwiększyć wydajność.

Jeśli zastosujesz się System.Runtime.CompilerServices.InternalsVisibleToAttribute do zestawu, który jest analizowany, ta reguła nie flaguje typów, które nie są domyślnie oznaczone jako sealed , ponieważ pole może być używane przez zestaw znajomy. Aby mimo to przeanalizować zestaw, zobacz Konfigurowanie kodu do analizy.

Jak naprawić naruszenia

Oznacz typ jako sealed (NotInheritable w Visual Basic).

Przykład

Poniższy fragment kodu przedstawia naruszenie ca1852:

internal class C
{ }
Class C
End Class

Poniższy fragment kodu naprawia naruszenie:

internal sealed class C
{ }
NotInheritable Class C
End Class

Kiedy pomijać ostrzeżenia

Można bezpiecznie pominąć ostrzeżenie, jeśli wydajność nie jest problemem.

Pomijanie ostrzeżenia

Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.

#pragma warning disable CA1852
// The code that's violating the rule is on this line.
#pragma warning restore CA1852

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.

[*.{cs,vb}]
dotnet_diagnostic.CA1852.severity = none

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.

Konfigurowanie kodu do analizowania

Użyj następującej opcji, aby skonfigurować, które części bazy kodu mają być uruchamiane w tej regule.

Tę opcję można skonfigurować tylko dla tej reguły, dla wszystkich reguł, do których ma ona zastosowanie, lub dla wszystkich reguł w tej kategorii (wydajność), których dotyczy. Aby uzyskać więcej informacji, zobacz Opcje konfiguracji reguły jakości kodu.

Ignoruj atrybut InternalsVisibleTo

Domyślnie ta reguła jest wyłączona, jeśli analizowany zestaw używa InternalsVisibleToAttribute do uwidocznienia jego symboli wewnętrznych. Aby określić, że reguła powinna być uruchamiana nawet wtedy, gdy zestaw jest oznaczony za pomocą InternalsVisibleToAttributepolecenia , dodaj następującą parę klucz-wartość do pliku editorconfig w projekcie:

dotnet_code_quality.CAXXXX.ignore_internalsvisibleto = true

Ta opcja jest dostępna począwszy od platformy .NET 8.