¿Cuál es la mejor manera de implementar una propiedad que es de solo lectura para el público, pero que se puede escribir para los herederos?

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

  •  03-07-2019
  •  | 
  •  

Pregunta

Si tengo una propiedad en la que quiero que los herederos escriban, pero mantengan la lectura externa, ¿cuál es la forma preferida de implementar esto? Normalmente voy con algo como esto:

private object m_myProp;
public object MyProp
{
    get { return m_myProp; }
}
protected void SetMyProp(object value)
{
    m_myProp = value;
}

¿Hay una mejor manera?

¿Fue útil?

Solución

private object m_myProp;
public object MyProp
{
    get { return m_myProp; }
    protected set { m_myProp = value; }
}

O en C # 3.0

public object MyProp {get; protected set;}

Otros consejos

Este es definitivamente el camino a seguir.

public object MyProp {get; protected set;}

Si estás en una versión anterior de C #, este es el camino a seguir.

private object _myProp;
public object MyProp
{
    get { return _myProp; }
    protected set { _myProp = value; }
}

Tener un setter y getter no es mejor que tener una variable en ese nivel de visibilidad.

Por lo tanto, solo puede hacer que la variable esté protegida y el lector sea público.

Dicho esto, los setters y getters son un indicador de OO mal, ¿estás seguro de que los necesitas? Deberías pedirle al objeto que haga algo con sus miembros, no pedirle a sus miembros que luego los manipulen fuera del objeto.

Esta es una regla muy general y hay muchas excepciones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top