CA1721: Nomes de propriedades não devem corresponder a métodos get

Property Valor
ID da regra CA1721
Título Nomes de propriedades não devem corresponder a métodos get
Categoria Nomenclatura
Correção interruptiva ou sem interrupção Quebra
Habilitado por padrão no .NET 8 Não

Causa

O nome de um membro começa com "Get" e, de outra forma, corresponde ao nome de uma propriedade. Por exemplo, um tipo que contém um método chamado 'GetColor' e uma propriedade chamada 'Color' causam uma violação de regra. Essa regra não será disparada se a propriedade ou o método estiver marcado com o ObsoleteAttribute.

Por padrão, essa regra analisa apenas os membros externamente visíveis e as propriedades, mas isso é configurável.

Descrição da regra

Métodos "Get" e propriedades devem ter nomes que diferenciem claramente a função.

As convenções de nomenclatura fornecem uma aparência comum para bibliotecas destinadas a Common Language Runtime. Essa consistência reduz o tempo necessário para aprender uma nova biblioteca de software e aumenta a confiança do cliente de que a biblioteca foi desenvolvida por alguém com experiência no desenvolvimento de código gerenciado.

Como corrigir violações

Altere o nome para que ele não corresponda ao nome de um método prefixado com 'Get'.

Quando suprimir avisos

Não suprima um aviso nessa regra. Uma exceção a essa regra é se o método "Get" for causado pela implementação da interface IExtenderProvider.

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

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.CA1721.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 (Nomenclatura) à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

Exemplo

O exemplo a seguir contém um método e uma propriedade que violam essa regra.

public class Test
{
    public DateTime Date
    {
        get { return DateTime.Today; }
    }

    // Violates rule: PropertyNamesShouldNotMatchGetMethods.
    public string GetDate()
    {
        return this.Date.ToString();
    }
}
Imports System

Namespace ca1721

    Public Class Test

        Public ReadOnly Property [Date]() As DateTime
            Get
                Return DateTime.Today
            End Get
        End Property

        ' Violates rule: PropertyNamesShouldNotMatchGetMethods.
        Public Function GetDate() As String
            Return Me.Date.ToString()
        End Function

    End Class

End Namespace