CA1044: Özellikler yalnız yazılabilir olmamalıdır

Özellik Değer
Kural Kimliği CA1044
Başlık Özellikler salt yazılabilir şeklinde olmamalıdır
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

Özelliğin bir ayarlayıcısı vardır ancak bir alıcısı yoktur.

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ı

Get erişimcileri bir özelliğe okuma erişimi sağlar ve set erişimcileri yazma erişimi sağlar. Salt okunur bir özelliğin kabul edilebilir ve genellikle gerekli olmasına rağmen, tasarım yönergeleri sadece yazılabilir özelliklerin kullanılmasını engeller. Bunun nedeni, bir kullanıcının değer ayarlamasına izin vermek ve ardından kullanıcının değeri görüntülemesini engellemek herhangi bir güvenlik sağlamaz. Ayrıca, okuma erişimi olmadan paylaşılan nesnelerin durumu görüntülenemediği için bunların kullanışlılığı sınırlıdır.

İhlalleri düzeltme

Bu kuralın ihlalini düzeltmek için özelliğine bir get erişimcisi ekleyin. Alternatif olarak, salt yazma özelliğinin davranışı gerekiyorsa, bu özelliği bir yönteme dönüştürmeyi göz önünde bulundurun.

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

Bu kuraldan gelen uyarıları gizlememeniz önerilir.

Kod çözümleme için konfigüre et

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çeneği kullanın.

Bu seçeneği 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

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.

Örnek

Aşağıdaki örnekte, BadClassWithWriteOnlyProperty salt yazma özelliğine sahip bir türdür. GoodClassWithReadWriteProperty düzeltilen kodu içerir.

Imports System

Namespace ca1044

    Public Class BadClassWithWriteOnlyProperty

        Dim someName As String

        ' Violates rule PropertiesShouldNotBeWriteOnly.
        WriteOnly Property Name As String
            Set
                someName = Value
            End Set
        End Property

    End Class

    Public Class GoodClassWithReadWriteProperty

        Property Name As String

    End Class

End Namespace
public class BadClassWithWriteOnlyProperty
{
    string? _someName;

    // Violates rule PropertiesShouldNotBeWriteOnly.
    public string? Name
    {
        set
        {
            _someName = value;
        }
    }
}

public class GoodClassWithReadWriteProperty
{
    public string? Name { get; set; }
}