Partilhar via


CA1852: Tipos internos de vedação

Property valor
ID da regra CA1852
Título Tipos internos de vedação
Categoria Desempenho
A correção está quebrando ou não quebrando Sem quebra
Versão introduzida .NET 7
Habilitado por padrão no .NET 9 Não

Motivo

Um tipo que não é acessível fora de seu assembly e não tem subtipos dentro de seu assembly que contém não está marcado sealed (NotInheritable no Visual Basic).

Descrição da regra

Quando um tipo não é acessível fora de sua montagem e não tem subtipos dentro de sua montagem de contenção, ele pode ser selado com segurança. Os tipos de vedação podem melhorar o desempenho. Para obter mais informações, consulte Proposta do analisador: tipos internos/privados de vedação].

Se você aplicar System.Runtime.CompilerServices.InternalsVisibleToAttribute ao assembly que está sendo analisado, essa regra não sinalizará tipos que não estão marcados como sealed por padrão, porque um campo pode ser usado por um assembly amigo. Para analisar o assembly de qualquer maneira, consulte Configurar código para analisar.

Como corrigir violações

Marque o tipo como sealed (NotInheritable no Visual Basic).

Exemplo

O trecho de código a seguir mostra uma violação de CA1852:

internal class C
{ }
Class C
End Class

O trecho de código a seguir corrige a violação:

internal sealed class C
{ }
NotInheritable Class C
End Class

Quando suprimir avisos

É seguro suprimir um aviso se o desempenho não for uma preocupação.

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 CA1852
// The code that's violating the rule is on this line.
#pragma warning restore CA1852

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

[*.{cs,vb}]
dotnet_diagnostic.CA1852.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 (Desempenho) às quais ela se aplica. Para obter mais informações, consulte Opções de configuração da regra de qualidade de código.

Ignorar o atributo InternalsVisibleTo

Por padrão, essa regra será desabilitada se o assembly que está sendo analisado usar InternalsVisibleToAttribute para expor seus símbolos internos. Para especificar que a regra deve ser executada mesmo se o assembly estiver marcado com InternalsVisibleToAttribute, adicione o seguinte par chave-valor a um arquivo .editorconfig em seu projeto:

dotnet_code_quality.CAXXXX.ignore_internalsvisibleto = true

Esta opção está disponível a partir do .NET 8.