Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
CA1507: Użyj
| Właściwości | Wartość |
|---|---|
| Identyfikator reguły | CA1507 |
| Tytuł | Używanie nameof zamiast ciągu |
| Kategoria | Łatwość konserwacji |
| Poprawka łamiąca lub nienaruszająca | Niezgodność |
| Domyślnie włączone na platformie .NET 10 | Jako sugestia |
| Zastosowane języki | C# i Visual Basic |
Przyczyna
Literał string lub stała, która odpowiada nazwie parametru w metodzie, do której należy, lub nazwie właściwości typu, do którego należy, jest używana jako argument dla metody.
Opis reguły
Reguła CA1507 flaguje użycie string literału jako argumentu do metody lub konstruktora, w którym wyrażenie nameof (NameOf w Visual Basic) zwiększa łatwość konserwacji. Reguła jest uruchamiana, jeśli spełnione są wszystkie następujące warunki:
Argument jest literałem lub stałą
string.Argument odpowiada parametrowi typu
stringmetody lub konstruktora, który jest wywoływany (to znaczy, że nie ma konwersji w miejscu wywołania).Albo:
Zadeklarowana nazwa parametru to
paramName, a stała wartość literałustringodpowiada nazwie parametru metody, wyrażenia lambda lub funkcji lokalnej, w której wywoływana jest metoda lub konstruktor.Zadeklarowana nazwa parametru to
propertyName, a stała wartość literałustringjest zgodna z nazwą właściwości typu, w ramach której wywołuje się metoda lub konstruktor.
Reguła CA1507 poprawia konserwację kodu w przypadkach, gdy parametr może być zmieniany w przyszłości, ale string literał nie jest błędnie zmieniany. Za pomocą elementu nameof symbol zostanie zmieniony, gdy nazwa parametru zostanie zmieniona w wyniku refaktoryzacji. Ponadto wszelkie błędy pisowni w nazwie parametru są przechwytywane przez kompilator.
Jak naprawić naruszenia
Aby naprawić naruszenie, zastąp string literał wyrażeniem nameof (NameOf w Visual Basic). Na przykład następujące dwa fragmenty kodu pokazują naruszenie reguły i sposób jego naprawy:
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.");
}
Wskazówka
Poprawka kodu jest dostępna dla tej reguły w programie Visual Studio. Aby go użyć, umieść kursor na string literału i naciśnij Ctrl+. (kropka). Wybierz Użyj nameof do wyrażania nazw symboli z listy wyświetlonych opcji.
Kiedy pomijać ostrzeżenia
Można bezpiecznie pominąć naruszenie tej reguły, jeśli nie martwisz się o konserwację kodu.
Pomijanie ostrzeżenia
Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.
#pragma warning disable CA1507
// The code that's violating the rule is on this line.
#pragma warning restore CA1507
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.CA1507.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.