Bagikan melalui


CA1044: Properti tidak boleh tulis saja

Properti Nilai
ID Aturan CA1044
Judul Properti tidak boleh hanya tulis
Golongan Desain
Perbaikan bersifat disruptif atau non-disruptif Merusak
Diaktifkan secara default di .NET 9 No

Penyebab

Properti memiliki aksesor yang ditetapkan tetapi bukan mendapatkan aksesor.

Secara default, aturan ini hanya melihat jenis yang terlihat secara eksternal, tetapi ini dapat dikonfigurasi.

Deskripsi aturan

Dapatkan aksesor menyediakan akses baca ke properti dan set aksesor menyediakan akses tulis. Meskipun dapat diterima dan sering kali diperlukan untuk memiliki properti baca-saja, panduan desain melarang penggunaan properti tulis saja. Ini karena membiarkan pengguna menetapkan nilai dan kemudian mencegah pengguna melihat nilai tidak memberikan keamanan apa pun. Selain itu, tanpa akses baca, status objek bersama tidak dapat dilihat, yang membatasi kegunaannya.

Cara memperbaiki pelanggaran

Untuk memperbaiki pelanggaran aturan ini, tambahkan aksesor get ke properti . Atau, jika perilaku properti tulis-saja diperlukan, pertimbangkan untuk mengonversi properti ini ke metode .

Kapan harus menekan peringatan

Disarankan agar Anda tidak menekan peringatan dari aturan ini.

Mengonfigurasi kode yang akan dianalisis

Gunakan opsi berikut untuk mengonfigurasi bagian mana dari codebase Anda yang akan menjalankan aturan ini.

Anda dapat mengonfigurasi opsi ini hanya untuk aturan ini, untuk semua aturan yang berlaku untuknya, atau untuk semua aturan dalam kategori ini (Desain) yang berlaku untuk aturan ini. Untuk informasi selengkapnya, lihat Opsi konfigurasi aturan kualitas kode.

Menyertakan permukaan API tertentu

Anda dapat mengonfigurasi bagian basis kode mana yang akan dijalankan aturan ini, berdasarkan aksesibilitasnya, dengan mengatur opsi api_surface. Misalnya, untuk menentukan bahwa aturan hanya boleh dijalankan pada permukaan API non-publik, tambahkan pasangan kunci-nilai berikut ke file .editorconfig di proyek Anda:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Nota

Ganti bagian XXXXCAXXXX dengan ID aturan yang berlaku.

Contoh

Dalam contoh berikut, BadClassWithWriteOnlyProperty adalah jenis dengan properti tulis-saja. GoodClassWithReadWriteProperty memuat kode yang dikoreksi.

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; }
}