CA1507: Dize yerine kullanın nameof
Özellik | Değer |
---|---|
Kural Kimliği | CA1507 |
Başlık | Dize yerine kullan nameof |
Kategori | Bakýmýný |
Hataya neden olan veya bozulmayan düzeltme | Hataya neden olmayan |
.NET 9'da varsayılan olarak etkin | Öneri olarak |
Neden
Bir string
yöntemin bağımsız değişkeni olarak, içeren yöntemin parametresinin adıyla veya içeren türün bir özelliğinin adıyla eşleşen değişmez değer veya sabit kullanılır.
Kural açıklaması
Kural CA1507, sabit string
değerin kullanımını bir yönteme veya oluşturucuya bağımsız değişken olarak işaretler ve burada (NameOf
Visual Basic'te) ifadesinin bir adı bakım özelliği ekler. Aşağıdaki koşulların tümü karşılanırsa kural tetiklenir:
Bağımsız değişken değişmez
string
değer veya sabittir.bağımsız değişkeni, yöntemin veya çağrılan oluşturucunun -typed parametresine karşılık gelir
string
(yani, çağrı sitesinde dönüştürme söz konusu değildir).Şunlardan biri:
parametresinin bildirilen adıdır
paramName
ve değişmez değeristring
, yöntemin veya oluşturucunun çağrıldığı yöntemin, lambdanın veya yerel işlevin parametresinin adıyla eşleşir.parametresinin bildirilen adıdır
propertyName
ve değişmez değerininstring
sabit değeri, yöntemin veya oluşturucunun çağrılmakta olduğu türün bir özelliğinin adıyla eşleşir.
CA1507 kuralı, gelecekte parametrenin yeniden adlandırılma ihtimali olan ancak string
değişmez değerin yanlışlıkla yeniden adlandırılmaması gibi durumlarda kod bakımlarını geliştirir. kullanılarak nameof
, parametre yeniden düzenleme işlemiyle yeniden adlandırıldığında simge yeniden adlandırılır. Buna ek olarak, parametrenin adında yazım hataları derleyici tarafından yakalanmış.
İhlalleri düzeltme
İhlali düzeltmek için değişmez değeri ( Visual Basic'te) ifadesiyle NameOf
değiştirin.string
Örneğin, aşağıdaki iki kod parçacığı kuralın ihlalini ve nasıl düzeltileceğini gösterir:
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.");
}
İpucu
Visual Studio'da bu kural için bir kod düzeltmesi kullanılabilir. Bunu kullanmak için imleci değişmez değere string
getirin ve Ctrl+ tuşuna (nokta) basın. Sunulan seçenekler listesinden Sembol adlarını ifade etmek için nameof kullan'ı seçin.
Uyarıların ne zaman bastırılması gerekiyor?
Kodunuzun sürdürülebilirliği konusunda endişeleriniz yoksa bu kuralın ihlalini gizlemeniz güvenlidir.
Uyarıyı gizleme
Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.
#pragma warning disable CA1507
// The code that's violating the rule is on this line.
#pragma warning restore CA1507
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini none
olarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA1507.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.