CA1044: Vlastnosti by neměl být pouze pro zápis
TypeName |
PropertiesShouldNotBeWriteOnly |
CheckId |
CA1044 |
Kategorie |
Microsoft.Design |
Narušující změna |
Narušující |
Příčina
Veřejná nebo chráněná vlastnost obsahuje přístupovou metodu set, ale neobsahuje přístupovou metodu get.
Popis pravidla
Přístupové metody get poskytují přístup ke čtení vlastnosti a přístupové metody set poskytují přístup k zápisu.Ačkoli je přijatelné a často nezbytné použít vlastnosti pouze pro čtení, směrnice návrhu zakazují použití vlastností pouze pro zápis.Důvodem je skutečnost, že umožnit uživateli nastavit hodnotu a poté uživateli zabránit ve zobrazení této hodnoty není bezpečné.Taktéž bez přístupu pro čtení není možné zobrazit stav sdílených objektů, což omezuje jejich užitečnost.
Jak vyřešit porušení
Přidání přístupové metody get k vlastnosti vyřeší porušení tohoto pravidla.Pokud je zajištění chování vlastnosti určené pouze pro zápis nutné, zvažte převod této vlastnosti na metodu.
Kdy potlačit upozornění
Důrazně se doporučujeme nepotlačovat upozornění na toto pravidlo.
Příklad
V následujícím příkladu obsahuje typ BadClassWithWriteOnlyProperty vlastnost určenou pouze pro zápis.Typ GoodClassWithReadWriteProperty obsahuje opravený kód.
Imports System
Namespace DesignLibrary
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
Dim someName As String
Property Name As String
Get
Return someName
End Get
Set
someName = Value
End Set
End Property
End Class
End Namespace
using System;
namespace DesignLibrary
{
public class BadClassWithWriteOnlyProperty
{
string someName;
// Violates rule PropertiesShouldNotBeWriteOnly.
public string Name
{
set
{
someName = value;
}
}
}
public class GoodClassWithReadWriteProperty
{
string someName;
public string Name
{
get
{
return someName;
}
set
{
someName = value;
}
}
}
}