Qual è il modo migliore per implementare una proprietà che è di sola lettura al pubblico, ma scrivibile agli eredi?
-
03-07-2019 - |
Domanda
Se ho una proprietà a cui voglio lasciare che gli eredi scrivano, ma continuino a leggere esternamente, qual è il modo preferito per implementarlo? Di solito vado con qualcosa del genere:
private object m_myProp;
public object MyProp
{
get { return m_myProp; }
}
protected void SetMyProp(object value)
{
m_myProp = value;
}
C'è un modo migliore?
Soluzione
private object m_myProp;
public object MyProp
{
get { return m_myProp; }
protected set { m_myProp = value; }
}
O in C # 3.0
public object MyProp {get; protected set;}
Altri suggerimenti
Questa è sicuramente la strada da percorrere.
public object MyProp {get; protected set;}
Se utilizzi una versione precedente di C #, questa è la strada da percorrere.
private object _myProp;
public object MyProp
{
get { return _myProp; }
protected set { _myProp = value; }
}
Avere un setter e getter non è davvero meglio di avere una variabile a quel livello di visibilità.
Quindi potresti semplicemente rendere la variabile stessa protetta e il lettore pubblico.
Detto questo, setter e getter sono un indicatore di cattiva OO - sei sicuro di averne bisogno? Dovresti chiedere all'oggetto di fare qualcosa con i suoi membri, non chiederlo ai suoi membri e poi manipolarli al di fuori dell'oggetto.
Questa è una regola molto generale e ci sono molte eccezioni.