Partilhar via


CA1058: Os tipos não devem estender certos tipos de base

Propriedade valor
ID da regra CA1058
Cargo Os tipos não devem estender certos tipos de base
Categoria Desenho
A correção está quebrando ou não quebrando Quebrando
Habilitado por padrão no .NET 8 Não

Causa

Um tipo estende um dos seguintes tipos básicos:

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

Descrição da regra

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

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

Coleções não genéricas

Utilizar e/ou alargar 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ê o 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 desta regra para violações sobre ApplicationException. É seguro suprimir um aviso desta regra para violações sobre XmlDocument. É seguro suprimir um aviso sobre uma coleção não genérica se o código foi lançado anteriormente.

Suprimir um aviso

Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar 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 de um arquivo, pasta ou projeto, defina sua gravidade como none no arquivo de configuração.

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

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

Configurar código para análise

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

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

Incluir superfícies de API específicas

Você pode configurar em quais partes da sua base de código executar essa regra, com base em sua acessibilidade. Por exemplo, para especificar que a regra deve ser executada somente na superfície de API não pública, adicione o seguinte par chave-valor a um arquivo .editorconfig em seu projeto:

dotnet_code_quality.CAXXXX.api_surface = private, internal