Delen via


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 8 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 de string 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 de string 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 nameofwordt 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 (NameOfin 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.

Code fix for CA1507 - use nameof to express symbol names

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.

Zie ook