CA1507: usare nameof al posto della stringa

Proprietà valore
ID regola CA1507
Title Usare nameof al posto della stringa
Categoria Gestibilità
Correzione che causa un'interruzione o un'interruzione Nessuna interruzione
Abilitato per impostazione predefinita in .NET 8 Come suggerimento

Causa

Un string valore letterale o costante che corrisponde al nome di un parametro del metodo contenitore o il nome di una proprietà del tipo contenitore viene utilizzato come argomento per un metodo.

Descrizione regola

La regola CA1507 contrassegna l'uso di un string valore letterale come argomento per un metodo o un costruttore in cui un'espressione nameof (NameOf in Visual Basic) aggiungerà manutenibilità. La regola viene attivata se vengono soddisfatte tutte le condizioni seguenti:

  • L'argomento è un string valore letterale o costante.

  • L'argomento corrisponde a un stringparametro tipizzato del metodo o al costruttore richiamato, ovvero non è presente alcuna conversione nel sito di chiamata.

  • Uno dei seguenti:

    • Il nome dichiarato del parametro è paramName e il valore costante del string valore letterale corrisponde al nome di un parametro del metodo, dell'espressione lambda o della funzione locale in cui viene richiamato il metodo o il costruttore.

    • Il nome dichiarato del parametro è propertyName e il valore costante del string valore letterale corrisponde al nome di una proprietà del tipo all'interno del quale viene richiamato il metodo o il costruttore.

La regola CA1507 migliora la manutenibilità del codice nei casi in cui il parametro può essere rinominato in futuro, ma il string valore letterale non viene erroneamente rinominato. nameofUsando , il simbolo verrà rinominato quando il parametro viene rinominato tramite un'operazione di refactoring. Inoltre, eventuali errori di ortografia nel nome del parametro vengono rilevati dal compilatore.

Come correggere le violazioni

Per correggere una violazione, sostituire il string valore letterale con un'espressione nameof (NameOf in Visual Basic). Ad esempio, i due frammenti di codice seguenti mostrano una violazione della regola e come risolverli:

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.");
}

Suggerimento

Una correzione del codice è disponibile per questa regola in Visual Studio. Per usarlo, posizionare il cursore sul string valore letterale e premere CTRL+. (punto). Scegliere Usa nameof per esprimere i nomi dei simboli dall'elenco di opzioni presentate.

Code fix for CA1507 - use nameof to express symbol names

Quando eliminare gli avvisi

È possibile eliminare una violazione di questa regola se non si è preoccupati per la manutenibilità del codice.

Eliminare un avviso

Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

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

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità none su nel file di configurazione.

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

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.

Vedi anche