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

Özellik Değer
Kural Kimliği CA1051
Başlık Görünür örnek alanlarını bildirmeyin
Kategori Tasarım
Hataya neden olan veya bozulmayan düzeltme Yeni
.NET 8'de varsayılan olarak etkin Hayır

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 veya internal olmalıdır private ve özellikleri kullanılarak kullanıma sunulmalı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, hataya neden olan değişikliklere neden olmadan genişledikçe 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. Dışarıdan görünür, , protectedve (Public, Protectedve Protected Friendprotected internal Visual Basic'te) erişilebilirlik düzeylerini ifade ederpublic.

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, kullanıma sunulan alanlar özelliklere göre performans veya bakım 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ı değiştirmek için öğesini kullandığında ref .

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, geçerli olduğu tüm kurallar veya bu kategorideki (Tasarım) tüm kurallar için yapılandırabilirsiniz. Daha fazla bilgi için bkz . Kod kalitesi kuralı yapılandırma seçenekleri.

Belirli API yüzeylerini ekleme

Bu kuralın üzerinde çalıştırılacak kod tabanınızın hangi bölümlerini erişilebilirliklerine göre 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

Dışlama yapıları

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

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
{
    private int instanceData = 32;

    public int InstanceData
    {
        get { return instanceData; }
        set { instanceData = value; }
    }
}

Ayrıca bkz.