Quel est le meilleur moyen d'implémenter une propriété en lecture seule pour le public, mais accessible en écriture aux héritiers?

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

  •  03-07-2019
  •  | 
  •  

Question

Si j’ai une propriété à laquelle les héritiers peuvent écrire, mais que je conserve en lecture seule à l’extérieur, quelle est la méthode préférée pour l’implémenter? Je vais habituellement avec quelque chose comme ça:

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

Y a-t-il un meilleur moyen?

Était-ce utile?

La solution

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

Ou en C # 3.0

public object MyProp {get; protected set;}

Autres conseils

C’est définitivement la voie à suivre.

public object MyProp {get; protected set;}

Si vous utilisez une ancienne version de C #, c’est la voie à suivre.

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

Avoir un setter et un getter n'est vraiment pas mieux que d'avoir une variable à ce niveau de visibilité.

Par conséquent, vous pouvez simplement protéger la variable elle-même et rendre le lecteur public.

Cela dit, les setters et les getters sont un indicateur de mauvais OO - êtes-vous sûr d'en avoir besoin? Vous devriez demander à l'objet de faire quelque chose avec ses membres, sans lui demander ses membres, puis de les manipuler en dehors de l'objet.

C'est une règle très générale et il y a beaucoup d'exceptions.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top