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:
- System.ApplicationException
- System.Xml.XmlDocument
- System.Collections.CollectionBase
- System.Collections.DictionaryBase
- System.Collections.Queue
- System.Collections.ReadOnlyCollectionBase
- System.Collections.SortedList
- System.Collections.Stack
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