sirve - propiedades c# get set
¿Cuál es la mejor manera de implementar una propiedad que es de solo lectura para el público, pero que se puede escribir en los herederos? (3)
Si tengo una propiedad en la que deseo que los herederos escriban, pero mantengo solo de forma externa, ¿cuál es la forma preferida de implementar esto? Suelo ir 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?
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; }
}
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;}
Tener un setter y getter realmente no es mejor que tener una variable en ese nivel de visibilidad.
Por lo tanto, puede hacer que la variable misma esté protegida y que el lector sea público.
Dicho esto, setters y getters son un indicador de mal OO - ¿estás seguro de que los necesitas? Debería pedirle al objeto que haga algo con sus miembros, no pedirle sus miembros y luego manipularlos fuera del objeto.
Esta es una regla muy general y hay muchas excepciones.