Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
| Eigenschappen | Weergegeven als | 
|---|---|
| Regel-id | CA1044 | 
| Titel | Eigenschappen mogen niet alleen worden geschreven | 
| Categorie | Ontwerpen | 
| Oplossing is brekend of niet-brekend | Breken | 
| Standaard ingeschakeld in .NET 9 | Nee | 
Oorzaak
Een eigenschap heeft een set accessor, maar geen get accessor.
Deze regel kijkt standaard alleen naar extern zichtbare typen, maar dit kan worden geconfigureerd.
Beschrijving van regel
Get accessors bieden leestoegang tot een eigenschap en instellen dat accessors schrijftoegang bieden. Hoewel het acceptabel en vaak nodig is om een alleen-lezen eigenschap te hebben, verbieden de ontwerprichtlijnen het gebruik van alleen-schrijven-eigenschappen. Dit komt doordat een gebruiker een waarde kan instellen en vervolgens verhindert dat de gebruiker de waarde bekijkt, geen beveiliging biedt. Ook, zonder leestoegang, kan de status van gedeelde objecten niet worden bekeken, waardoor de bruikbaarheid ervan wordt beperkt.
Schendingen oplossen
Als u een schending van deze regel wilt oplossen, voegt u een get accessor toe aan de eigenschap. Als het gedrag van een eigenschap alleen-schrijven nodig is, kunt u deze eigenschap ook converteren naar een methode.
Wanneer waarschuwingen onderdrukken
Het is raadzaam om waarschuwingen van deze regel niet te onderdrukken.
Code configureren om te analyseren
Gebruik de volgende optie om te configureren op welke onderdelen van uw codebase deze regel moet worden uitgevoerd.
U kunt deze optie configureren voor alleen deze regel, voor alle regels waarop deze van toepassing is, of voor alle regels in deze categorie (ontwerp) waarop deze van toepassing is. Zie de configuratieopties voor de codekwaliteitsregel voor meer informatie.
Specifieke API-oppervlakken opnemen
U kunt configureren op welke onderdelen van uw codebase deze regel moet worden uitgevoerd, op basis van hun toegankelijkheid, door de optie api_surface in te stellen. Als u bijvoorbeeld wilt opgeven dat de regel alleen moet worden uitgevoerd op het niet-openbare API-oppervlak, voegt u het volgende sleutel-waardepaar toe aan een .editorconfig-bestand in uw project:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Notitie
Vervang het XXXX deel van CAXXXX door de id van de toepasselijke regel.
Opmerking
In het volgende voorbeeld BadClassWithWriteOnlyProperty is een type met een eigenschap alleen-schrijven. 
              GoodClassWithReadWriteProperty bevat de gecorrigeerde code.
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; }
}