Megosztás a következőn keresztül:


CA1044: A tulajdonságok nem írhatók csak

Tulajdonság Érték
Szabályazonosító CA1044
Cím A tulajdonságok nem írhatók csak
Kategória Design
A javítás kompatibilitástörő vagy nem törik Törés
Alapértelmezés szerint engedélyezve a .NET 8-ban Nem

Ok

A tulajdonságnak van egy készlettartozéka, de nem kap tartozékot.

Ez a szabály alapértelmezés szerint csak külsőleg látható típusokat tekint meg, de ez konfigurálható.

Szabály leírása

A tartozékok olvasási hozzáférést biztosítanak egy tulajdonsághoz, és a tartozékokkal írási hozzáférést biztosítanak. Bár elfogadható és gyakran szükséges írásvédett tulajdonsággal rendelkezni, a tervezési irányelvek tiltják a írásvédett tulajdonságok használatát. Ennek az az oka, hogy ha egy felhasználó beállít egy értéket, majd megakadályozza, hogy a felhasználó megtekintse az értéket, nem biztosít semmilyen biztonságot. Olvasási hozzáférés nélkül a megosztott objektumok állapota nem tekinthető meg, ami korlátozza a hasznosságukat.

Szabálysértések kijavítása

A szabály megsértésének kijavításához adjon hozzá egy lekéréses tartozékot a tulajdonsághoz. Másik lehetőségként, ha egy írásvédett tulajdonság viselkedésére van szükség, fontolja meg a tulajdonság metódussá alakítását.

Mikor kell letiltani a figyelmeztetéseket?

Javasoljuk, hogy ne tiltsa le a szabály figyelmeztetéseit.

Kód konfigurálása elemzéshez

A következő beállítással konfigurálhatja, hogy a kódbázis mely részein futtassa ezt a szabályt.

Ezt a beállítást konfigurálhatja csak ehhez a szabályhoz, az összes szabályhoz, vagy az ebben a kategóriában (Tervezés) szereplő összes szabályhoz, amelyekre vonatkozik. További információ: Kódminőségi szabály konfigurációs beállításai.

Adott API-felületek belefoglalása

A kódbázis azon részeit konfigurálhatja, amelyeken futtathatja ezt a szabályt az akadálymentességük alapján. Ha például meg szeretné adni, hogy a szabály csak a nem nyilvános API-felületen fusson, adja hozzá a következő kulcs-érték párot a projekt egyik .editorconfig fájljához:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Példa

Az alábbi példában BadClassWithWriteOnlyProperty egy írásvédett tulajdonságú típus látható. GoodClassWithReadWriteProperty a javított kódot tartalmazza.

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