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.