Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
| Eigenschap | Waarde |
|---|---|
| Regel-id | CA1721 |
| Titel | Eigenschapsnamen mogen niet overeenkomen met get-methoden |
| Categorie | Naamgeving |
| Fix kan brekend of niet-brekend zijn | Onderbreking |
| Standaard ingeschakeld in .NET 10 | Nee |
| Toepasselijke talen | C# en Visual Basic |
Oorzaak
De naam van een lid begint met 'Get' en komt verder overeen met de naam van een eigenschap. Een type dat bijvoorbeeld een methode bevat met de naam 'GetColor' en een eigenschap met de naam 'Color' veroorzaakt een schending van de regel. Deze regel wordt niet geactiveerd als de eigenschap of de methode is gemarkeerd met de ObsoleteAttribute.
Deze regel kijkt standaard alleen naar extern zichtbare leden en eigenschappen, maar dit is configureerbaar.
Beschrijving van regel
'Get'-methoden en -eigenschappen moeten namen hebben die hun functie duidelijk onderscheiden.
Naamconventies zorgen voor een eenduidige uitstraling voor bibliotheken die gericht zijn op de Common Language Runtime (CLR). Deze consistentie vermindert de tijd die nodig is om een nieuwe softwarebibliotheek te leren en verhoogt het vertrouwen van de klant dat de bibliotheek is ontwikkeld door iemand die ervaring heeft met het ontwikkelen van beheerde code.
Hoe schendingen op te lossen
Wijzig de naam zodat deze niet overeenkomt met de naam van een methode die wordt voorafgegaan door 'Get'.
Wanneer waarschuwingen onderdrukken
Een waarschuwing van deze regel niet onderdrukken. Een uitzondering op die regel is als de methode Get wordt veroorzaakt door het implementeren van de IExtenderProvider interface.
Een waarschuwing onderdrukken
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.
#pragma warning disable CA1721
// The code that's violating the rule is on this line.
#pragma warning restore CA1721
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none ervan in op het configuratiebestand.
[*.{cs,vb}]
dotnet_diagnostic.CA1721.severity = none
Zie voor meer informatie Hoe codeanalysewaarschuwingen te onderdrukken.
Code configureren om te analyseren
Gebruik de volgende optie om te configureren op welke onderdelen van uw codebase deze regel moet worden uitgevoerd.
U kunt deze optie configureren voor alleen deze regel, voor alle regels waarop deze van toepassing is, of voor alle regels in deze categorie (naamgeving) waarop deze van toepassing is. Zie de configuratieopties voor de codekwaliteitsregel voor meer informatie.
Specifieke API-oppervlakken opnemen
U kunt configureren op welke onderdelen van uw codebase deze regel moet worden uitgevoerd, op basis van hun toegankelijkheid, door de optie api_surface in te stellen. Als u bijvoorbeeld wilt opgeven dat de regel alleen moet worden uitgevoerd op het niet-openbare API-oppervlak, voegt u het volgende sleutel-waardepaar toe aan een .editorconfig-bestand in uw project:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Notitie
Vervang het XXXX deel van CAXXXX door de id van de toepasselijke regel.
Voorbeeld
Het volgende voorbeeld bevat een methode en eigenschap die deze regel schenden.
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