Бөлісу құралы:


CA1852: запечатывать внутренние типы

Свойство Значение
Идентификатор правила CA1852
Заголовок Закрывать внутренние типы
Категория Производительность
Исправление является критическим или не критическим неразрывный
Представленная версия .NET 7
Включен по умолчанию в .NET 10 Нет
Применимые языки C# и Visual Basic

Причина

Тип, который недоступен за пределами своей сборки и не имеет подтипов в его содержащей сборке не помечен sealed (NotInheritable в Visual Basic).

Описание правила

Если тип недоступен за пределами сборки и не имеет подтипов в своей содержащей сборке, его можно безопасно запечатывать. Типы запечатывания могут повысить производительность. Для получения дополнительной информации см. проект анализатора: закрытие внутренних и частных типов].

Если вы применяете System.Runtime.CompilerServices.InternalsVisibleToAttribute к анализируемой сборке, это правило по умолчанию не выделяет типы, которые не помечены как sealed, потому что поле может использоваться дружественной сборкой. Чтобы проанализировать сборку, см. статью "Настройка кода для анализа".

Устранение нарушений

Пометьте тип как sealed (NotInheritable в Visual Basic).

Пример

В следующем фрагменте кода показано нарушение CA1852:

internal class C
{ }
Class C
End Class

Следующий фрагмент кода исправляет нарушение.

internal sealed class C
{ }
NotInheritable Class C
End Class

Когда лучше отключить предупреждения

Подавление предупреждения безопасно, если производительность не является проблемой.

Отключение предупреждений

Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.

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

Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.

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

Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.

Настройка кода для анализа

Используйте следующий параметр, чтобы выбрать части базы кода для применения этого правила.

Этот параметр можно настроить только для этого правила, для всех правил, к которым он применяется, или для всех правил в этой категории (производительности), к которым она применяется. Дополнительные сведения см. в статье Параметры конфигурации правила качества кода.

Игнорировать атрибут InternalsVisibleTo

По умолчанию это правило отключено, если анализируемая сборка используется InternalsVisibleToAttribute для предоставления внутренних символов. Чтобы изменить конфигурацию, можно задать параметр ignore_internalsvisibleto. Чтобы указать, что правило должно выполняться, даже если сборка помечена InternalsVisibleToAttribute, добавьте следующую пару "ключ-значение" в файл editorconfig в проекте:

dotnet_code_quality.CAXXXX.ignore_internalsvisibleto = true

Заметка

Замените XXXX частью CAXXXX идентификатором применимого правила.

Этот параметр доступен начиная с .NET 8.