CA1058: Tipos não devem estender determinados tipos base

Property Valor
ID da regra CA1058
Título Tipos não devem estender determinados tipos base
Categoria Projetar
Correção interruptiva ou sem interrupção Quebra
Habilitado por padrão no .NET 8 Não

Causa

Um tipo estende um dos seguintes tipos de base:

Por padrão, essa regra apenas analisa os tipos visíveis externamente, mas isso é configurável.

Descrição da regra

As exceções devem derivar de System.Exception ou uma de suas subclasses no namespace System.

Não crie uma subclasse de XmlDocument se você quiser criar uma exibição XML de um modelo de objeto ou fonte de dados subjacente.

Coleções não genéricas

Use e/ou estenda coleções genéricas sempre que possível. Não estenda coleções não genéricas em seu código, a menos que você a tenha enviado anteriormente.

Exemplos de uso incorreto

public class MyCollection : CollectionBase
{
}

public class MyReadOnlyCollection : ReadOnlyCollectionBase
{
}

Exemplos de uso correto

public class MyCollection : Collection<T>
{
}

public class MyReadOnlyCollection : ReadOnlyCollection<T>
{
}

Como corrigir violações

Para corrigir uma violação dessa regra, derive o tipo de um tipo base diferente ou de uma coleção genérica.

Quando suprimir avisos

Não suprima um aviso dessa regra para violações sobre ApplicationException. É seguro suprimir um aviso dessa regra para violações sobre XmlDocument. É seguro suprimir um aviso sobre uma coleção não genérica se o código tiver sido liberado anteriormente.

Suprimir um aviso

Para suprimir apenas uma violação, adicione diretivas de pré-processador ao arquivo de origem a fim de desabilitar e, em seguida, reabilitar a regra.

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

Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade como none no arquivo de configuração.

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

Para obter mais informações, confira Como suprimir avisos de análise de código.

Configurar código para analisar

Use a opção a seguir para configurar em quais partes da base de código essa regra deve ser executada.

Você pode configurar essa opção apenas para essa regra, para todas as regras às quais ela se aplica ou para todas as regras nessa categoria (Design) às quais ela se aplica. Para saber mais, confira Opções de configuração de regra de qualidade de código.

Incluir superfícies de API específicas

É possível configurar em quais partes da base de código essa regra deverá ser executada, com base na acessibilidade. Por exemplo, para especificar que a regra deverá ser executada apenas na superfície de API não pública, adicione o seguinte par chave-valor a um arquivo .editorconfig no projeto:

dotnet_code_quality.CAXXXX.api_surface = private, internal