Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
| Свойство | Значение |
|---|---|
| Идентификатор правила | 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.