Existe-t-il un moyen d'appliquer le reste de ma classe pour accéder au setter de propriété plutôt qu'au champ de sauvegarde? Considérons le code maladroit suivant:Comment masquer le champ de sauvegarde du reste de la classe
public class Brittle
{
private string _somethingWorthProtecting;
public string SomethingWorthProtecting
{
get { return _somethingWorthProtecting; }
set
{
_somethingWorthProtecting = value;
ReallyNeedToDoThisEverTimeTheValueChanges();
}
}
public void OhDearWhatWasIThinking()
{
_somethingWorthProtecting = "Shooting myself in the foot here, aren't I?";
}
}
Pour autant que je sache, C# ne fournit pas de mécanisme pour empêcher le développeur de la classe de faire cette erreur. (Les propriétés automatiques ne sont manifestement pas une option dans cette situation.) Existe-t-il un modèle de conception ou une pratique qui peut aider à protéger contre ces fins de contournement par inadvertance?
S'il est si important alors il vaut la peine d'être testé unitairement –
* « pour empêcher le développeur de la classe de faire cette erreur » * - c'est surpuissant, au sérieux. Si une personne modifie cette classe, a besoin d'aide comme celle-ci, alors ne laissez pas cette personne modifier quoi que ce soit. Les commentaires devraient suffire. De l'autre côté, vous pouvez donner ce nom de champ * dédié *: _doNotModifyMePlx'. – Sinatr