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


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

TypeName

TypesShouldNotExtendCertainBaseTypes

CheckId

CA1058

Категория

Microsoft.Design

Критическое изменение

Критическое изменение

Причина

Видимый извне тип расширяет некоторые базовые типы. В настоящее время это правило относится к типам, производным от следующих типов:

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

В .NET Framework версии 1 было рекомендовано делать новые производными от ApplicationException. Рекомендация изменилась; новые исключения должны быть производными от 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. Если код был ранее выпущен, можно отключать предупреждения, касающиеся неуниверсальных коллекций.