CA1721: Egenskapsnamn ska inte matcha get-metoder

Egenskap Värde
Regel-ID CA1721
Title Egenskapsnamn ska inte matcha get-metoder
Kategori Namngivning
Korrigeringen är antingen invasiv eller icke-invasiv Avbrott
Aktiverad som standard i .NET 10 Nej
Tillämpliga språk C# och Visual Basic

Orsak

Namnet på en medlem börjar med "Get" och matchar i övrigt namnet på en egenskap. En typ som innehåller en metod med namnet "GetColor" och en egenskap med namnet "Color" orsakar till exempel en regelöverträdelse. Den här regeln utlöses inte om antingen egenskapen eller metoden är markerad med ObsoleteAttribute.

Som standard tittar den här regeln bara på externt synliga medlemmar och egenskaper, men detta kan konfigureras.

Regelbeskrivning

"Get"-metoder och egenskaper bör ha namn som tydligt särskiljer deras funktion.

Namngivningskonventioner ger ett enhetligt utseende för bibliotek som riktar sig mot Common Language Runtime (CLR). Den här konsekvensen minskar den tid som krävs för att lära sig ett nytt programvarubibliotek och ökar kundernas förtroende för att biblioteket har utvecklats av någon som har expertis inom att utveckla hanterad kod.

Så här åtgärdar du överträdelser

Ändra namnet så att det inte matchar namnet på en metod som börjar med "Get".

När du ska ignorera varningar

Ignorera inte en varning från den här regeln. Ett undantag från den regeln är om metoden "Get" orsakas vid implementering av IExtenderProvider-gränssnittet.

Ignorera en varning

Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.

#pragma warning disable CA1721
// The code that's violating the rule is on this line.
#pragma warning restore CA1721

Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none i konfigurationsfilen.

[*.{cs,vb}]
dotnet_diagnostic.CA1721.severity = none

Mer information finns i Så här utelämnar du kodanalysvarningar.

Konfigurera kod för analys

Använd följande alternativ för att konfigurera vilka delar av kodbasen som regeln ska köras på.

Du kan konfigurera det här alternativet för bara den här regeln, för alla regler som den gäller för eller för alla regler i den här kategorin (namngivning) som den gäller för. Mer information finns i Konfigurationsalternativ för kodkvalitetsregel.

Inkludera specifika ytor för API:er

Du kan konfigurera vilka delar av kodbasen som ska köra den här regeln baserat på deras tillgänglighet genom att ange alternativet api_surface. Om du till exempel vill ange att regeln endast ska köras mot den icke-offentliga API-ytan lägger du till följande nyckel/värde-par i en .editorconfig-fil i projektet:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Anteckning

Ersätt den XXXX delen av CAXXXX med ID:t för den tillämpliga regeln.

Exempel

Följande exempel innehåller en metod och egenskap som bryter mot den här regeln.

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