CA1051: Görünür örnek alanları bildirmeyin

Özellik Değer
Kural Kimliği CA1051
Başlık Görünür örnek alanlarını bildirmeyin
Kategori Tasarım
Düzeltme bozucu ya da bozmayan olabilir Son Dakika
.NET 10'da varsayılan olarak etkin Hayır
Geçerli diller C# ve Visual Basic

Neden

Türün özel olmayan bir örnek alanı vardır.

Varsayılan olarak, bu kural yalnızca dışarıdan görünen türlere bakar, ancak bu yapılandırılabilir.

Kural açıklaması

Bir alanın birincil kullanım alanının uygulama ayrıntısı olması gerekir. Alanlar private veya internal olmalıdır ve özellikler aracılığıyla açığa çıkartılmalıdır. Bir özelliğe erişmek bir alana erişmek kadar kolaydır ve bir özelliğin erişimcilerindeki kod, türün özellikleri genişledikçe hatalı değişiklikler oluşturmadan değişebilir.

Yalnızca bir özel veya iç alanın değerini döndüren özellikler, bir alana erişirken aynı performansı sergileyebilecek şekilde iyileştirilir; özellikler yerine dışarıdan görünür alanlar kullanmanın performans kazancı en düşük düzeydedir. Harici olarak görülebilir terimi public, protected ve protected internal (Public, Protected ve Protected Friend Visual Basic'te) erişim seviyelerini ifade eder.

Ayrıca, ortak alanlar Bağlantı talepleri tarafından korunamaz. (Bağlantı talepleri .NET Core uygulamaları için geçerli değildir.)

İhlalleri düzeltme

Bu kuralın ihlalini düzeltmek için, alanı private oluşturun veya internal dışarıdan görünür bir özellik kullanarak kullanıma açın.

Uyarıların ne zaman bastırılması gerekiyor?

Yalnızca tüketicilerin alana doğrudan erişmesi gerektiğinden eminseniz bu uyarıyı gizleyebilirsiniz. Çoğu uygulama için, açık alanlar özelliklere göre performans veya sürdürülebilirlik avantajları sağlamaz.

Tüketicilerin aşağıdaki durumlarda alan erişimine ihtiyacı olabilir:

  • ASP.NET Web Forms içerik denetimlerinde.
  • Hedef platform, WPF ve UWP için model-view-viewmodel (MVVM) çerçeveleri gibi alanları ref kullanarak değiştirdiğinde.

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 CA1051
// The code that's violating the rule is on this line.
#pragma warning restore CA1051

Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini noneolarak ayarlayın.

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

Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.

API'leri dahil et veya hariç tut

Bu kuralın kod tabanınızın hangi bölümlerinde çalıştırılacaklarını yapılandırmak için aşağıdaki seçenekleri kullanın.

Bu seçenekleri yalnızca bu kural için, uyguladıkları tüm kurallar için veya bu kategorideki tüm kurallar için (Tasarım) yapılandırabilirsiniz. Daha fazla bilgi için bkz . Kod kalitesi kuralı yapılandırma seçenekleri.

Belirli API yüzeylerini ekleme

api_surface seçeneğini ayarlayarak, bu kuralın erişilebilirliği temelinde kod tabanınızın hangi bölümlerinde çalıştırılacaklarını yapılandırabilirsiniz. Örneğin, kuralın yalnızca genel olmayan API yüzeyinde çalıştırılması gerektiğini belirtmek için projenizdeki bir .editorconfig dosyasına aşağıdaki anahtar-değer çiftini ekleyin:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Not

XXXX CAXXXX bölümünü geçerli kuralın kimliğiyle değiştirin.

Struct yapılarını dışla

struct alanlarının (Structure Visual Basic'te) analiz edilmemesini sağlayabilirsiniz.

dotnet_code_quality.ca1051.exclude_structs = true

Örnek

Aşağıdaki örnekte bu kuralı ihlal eden bir tür (BadPublicInstanceFields) gösterilmektedir. GoodPublicInstanceFields düzeltilen kodu gösterir.

public class BadPublicInstanceFields
{
    // Violates rule DoNotDeclareVisibleInstanceFields.
    public int instanceData = 32;
}

public class GoodPublicInstanceFields
{
    public int InstanceData { get; set; } = 32;
}

Ayrıca bkz.