Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
| Tulajdonság | Érték |
|---|---|
| Szabályazonosító | CA1044 |
| Cím | A tulajdonságok nem lehetnek csak írhatóak |
| Kategória | Tervezés |
| A javítás romboló vagy nem romboló | Szünetelés |
| Alapértelmezés szerint engedélyezve a .NET 10-ben | Nem |
| Alkalmazandó nyelvek | C# és Visual Basic |
Ok
A tulajdonságnak van egy beállító metódusa, de nincs lekérdező metódusa.
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 get lekérők olvasási hozzáférést biztosítanak egy tulajdonsághoz, a set beállítók pedig í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 az csak írható 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 csak írásra alkalmas 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 nyomja el 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 api_surface beállítással konfigurálhatja, hogy a kódbázis mely részein futtassa 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
Jegyzet
Cserélje le a XXXXCAXXXX részét a vonatkozó szabály azonosítójára.
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; }
}