Qual è il modo migliore per implementare una proprietà che è di sola lettura al pubblico, ma scrivibile agli eredi?

StackOverflow https://stackoverflow.com/questions/219904

  •  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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top