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


CA1058: Типы не должны расширять конкретные базовые типы

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

Причина

Тип расширяет один из следующих базовых типов:

По умолчанию это правило проверяет только видимые извне типы, но это поведение можно настроить.

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

Исключения должны быть производными от System.Exception или одного из его подклассов в пространстве имен System.

Не создавайте подкласс XmlDocument, если вы хотите создать XML-представление базовой модели объектов или источника данных.

Неуниверсальные коллекции

Старайтесь использовать или расширять универсальные коллекции, где это возможно. Не расширяйте неуниверсальные коллекции в коде, если они уже не были поставлены ранее.

Примеры неправильного использования

public class MyCollection : CollectionBase
{
}

public class MyReadOnlyCollection : ReadOnlyCollectionBase
{
}

Примеры правильного использования

public class MyCollection : Collection<T>
{
}

public class MyReadOnlyCollection : ReadOnlyCollection<T>
{
}

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

Чтобы устранить нарушение этого правила, необходимо создать производный тип от другого базового типа или универсальной коллекции.

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

Не отключайте предупреждение из этого правила о нарушениях ApplicationException. Безопасно отключить предупреждение из этого правила о нарушениях XmlDocument. Можно безопасно отключить предупреждение о неуниверсальной коллекции, если код уже был выпущен.

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

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

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

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

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

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

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

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

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

Включите конкретные поверхности API

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

dotnet_code_quality.CAXXXX.api_surface = private, internal

Заметка

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