Je me retrouve souvent à implémenter une classe qui maintient une sorte de propriété d'état propre sous forme d'énumération : J'ai un enum Status et UNE propriété Status de type Status. Comment dois-je résoudre ce conflit de noms ?
public class Car
{
public enum Status
{
Off,
Starting,
Moving
};
Status status = Status.Off;
public Status Status // <===== Won't compile =====
{
get { return status; }
set { status = value; DoSomething(); }
}
}
Si l'enum Status était commun à différents types, je le placerais en dehors de la classe et le problème serait résolu. Mais le statut ne s'applique qu'à la voiture et il n'est donc pas logique de déclarer l'enum en dehors de la classe.
Quelle convention de dénomination utilisez-vous dans ce cas ?
NB : Cette question a été partiellement débattue dans les commentaires d'une réponse de cette question . Comme ce n'était pas le principal question, il n'a pas eu beaucoup de visibilité.
EDIT : Filip Ekberg propose une excellente solution de contournement pour le cas spécifique de "Status". Cependant, je serais intéressé de lire des solutions où le nom de l'enum/de la propriété est différent, comme dans l'article de Michael Prewecki intitulé réponse .
EDIT2 (mai 2010) : Ma solution préférée est de mettre le nom du type d'enum au pluriel, comme suggéré par Chris S. Selon les directives de MS, cela ne devrait être utilisé que pour les flag enums. Mais j'ai fini par l'apprécier de plus en plus. Je l'utilise maintenant pour les enums réguliers aussi.