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