CA1507: Gebruiken nameof
in plaats van tekenreeks
Eigenschappen | Weergegeven als |
---|---|
Regel-id | CA1507 |
Titel | Gebruiken nameof in plaats van tekenreeks |
Categorie | Onderhoudbaarheid |
Oplossing is brekend of niet-brekend | Niet-brekend |
Standaard ingeschakeld in .NET 9 | Als suggestie |
Oorzaak
Een string
letterlijke of constante die overeenkomt met de naam van een parameter van de bevattende methode of de naam van een eigenschap van het betreffende type wordt gebruikt als argument voor een methode.
Beschrijving van regel
Regel CA1507 markeert het gebruik van een string
letterlijke term als argument voor een methode of constructor waarbij een naamof (NameOf
in Visual Basic)-expressie onderhoudbaarheid zou toevoegen. De regel wordt geactiveerd als aan alle volgende voorwaarden wordt voldaan:
Het argument is een
string
letterlijke of constante.Het argument komt overeen met een
string
-getypte parameter van de methode of de constructor die wordt aangeroepen (dat wil gezegd, er is geen conversie betrokken bij de aanroepsite).Ofwel:
De gedeclareerde naam van de parameter is
paramName
en de constante waarde van destring
letterlijke waarde komt overeen met de naam van een parameter van de methode, lambda of lokale functie waarin de methode of constructor wordt aangeroepen.De gedeclareerde naam van de parameter is
propertyName
en de constante waarde van destring
letterlijke waarde komt overeen met de naam van een eigenschap van het type waarin de methode of constructor wordt aangeroepen.
Regel CA1507 verbetert de onderhoudbaarheid van code in gevallen waarin de parameter in de toekomst kan worden hernoemd, maar de string
letterlijke waarde wordt per ongeluk niet hernoemd. Met behulp van nameof
wordt de naam van het symbool gewijzigd wanneer de parameter wordt hernoemd via een herstructureringsbewerking. Daarnaast worden spelfouten in de naam van de parameter gevangen door de compiler.
Schendingen oplossen
Als u een schending wilt oplossen, vervangt u de string
letterlijke tekst door een expressie (NameOf
in Visual Basic). In de volgende twee codefragmenten ziet u bijvoorbeeld een schending van de regel en hoe u deze kunt oplossen:
public Book(string title)
{
// Violates rule CA1507
Title = title ?? throw new ArgumentNullException("title", "All books must have a title.");
}
public Book(string title)
{
// Resolves rule CA1507 violation
Title = title ?? throw new ArgumentNullException(nameof(title), "All books must have a title.");
}
Tip
Er is een codeoplossing beschikbaar voor deze regel in Visual Studio. Als u deze wilt gebruiken, plaatst u de cursor op de string
letterlijke plaats en drukt u op Ctrl+. (punt). Kies Naamvan gebruiken om symboolnamen uit te drukken in de lijst met opties die worden weergegeven.
Wanneer waarschuwingen onderdrukken
Het is veilig om een schending van deze regel te onderdrukken als u zich geen zorgen maakt over de onderhoudbaarheid van uw code.
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 CA1507
// The code that's violating the rule is on this line.
#pragma warning restore CA1507
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.CA1507.severity = none
Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.