CA1812: Evitar classes internas sem instânciasCA1812: Avoid uninstantiated internal classes

ValorValue
ID da regraRule ID CA1812CA1812
CategoriaCategory DesempenhoPerformance
A correção está sendo interrompida ou não está sendo interrompidaFix is breaking or non-breaking Sem interrupçãoNon-breaking

CausaCause

Um tipo interno (de nível de assembly) nunca é instanciado.An internal (assembly-level) type is never instantiated.

Descrição da regraRule description

Essa regra tenta localizar uma chamada para um dos construtores do tipo e relata uma violação se nenhuma chamada for encontrada.This rule tries to locate a call to one of the constructors of the type and reports a violation if no call is found.

Os seguintes tipos não são examinados por essa regra:The following types are not examined by this rule:

  • Tipos de valorValue types

  • Tipos abstratosAbstract types

  • EnumeraçõesEnumerations

  • DelegadosDelegates

  • Tipos de matriz emitidos pelo compiladorCompiler-emitted array types

  • Tipos que não podem ser instanciados e que só definem os static métodos ( Shared em Visual Basic).Types that cannot be instantiated and that only define static (Shared in Visual Basic) methods.

Se você aplicar o System.Runtime.CompilerServices.InternalsVisibleToAttribute ao assembly que está sendo analisado, essa regra não sinalizará os tipos marcados como internal ( Friend em Visual Basic) porque um campo pode ser usado por um assembly Friend.If you apply the System.Runtime.CompilerServices.InternalsVisibleToAttribute to the assembly that's being analyzed, this rule will not flag types that are marked as internal (Friend in Visual Basic) because a field may be used by a friend assembly.

Como corrigir violaçõesHow to fix violations

Para corrigir uma violação dessa regra, remova o tipo ou adicione o código que o utiliza.To fix a violation of this rule, remove the type or add code that uses it. Se o tipo contiver apenas static métodos, adicione um dos seguintes ao tipo para impedir que o compilador emitisse um construtor de instância pública padrão:If the type contains only static methods, add one of the following to the type to prevent the compiler from emitting a default public instance constructor:

  • O static modificador para tipos C# que se destinam .NET Framework 2,0 ou posterior.The static modifier for C# types that target .NET Framework 2.0 or later.

  • Um Construtor privado para tipos que visam .NET Framework versões 1,0 e 1,1.A private constructor for types that target .NET Framework versions 1.0 and 1.1.

Quando suprimir avisosWhen to suppress warnings

É seguro suprimir um aviso dessa regra.It is safe to suppress a warning from this rule. É recomendável suprimir esse aviso nas seguintes situações:We recommend that you suppress this warning in the following situations: