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:
- 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 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