Поделиться через


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

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

Причина

Тип, который недоступен за пределами своей сборки и не имеет подтипов в его содержащей сборке не помечен 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 для предоставления внутренних символов. Чтобы указать, что правило должно выполняться, даже если сборка помечена InternalsVisibleToAttribute, добавьте следующую пару "ключ-значение" в файл editorconfig в проекте:

dotnet_code_quality.CAXXXX.ignore_internalsvisibleto = true

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