Spesso mi trovo a implementare una classe che mantiene una sorta di proprietà status come enum: ho una proprietà Status enum e ONE Status di tipo Status. Come dovrei risolvere questo conflitto di nomi?
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(); }
}
}
Se l'enumerazione dello stato fosse comune a tipi diversi, lo metterei fuori dalla classe e il problema sarebbe risolto. Ma Status si applica solo a Car, quindi non ha senso dichiarare l'enumerazione al di fuori della classe.
Quale convenzione di denominazione usi in questo caso?
NB: Questa domanda è stata parzialmente discussa nei commenti di una risposta a questa domanda . Dato che non era la domanda principale , non ha avuto molta visibilità.
EDIT: Filip Ekberg suggerisce un'eccellente soluzione alternativa IMO per il caso specifico di "Status". Tuttavia, sarebbe interessante leggere le soluzioni in cui il nome dell'enumerazione / proprietà è diverso, come nella risposta di Michael Prewecki .
EDIT2 (maggio 2010): la mia soluzione preferita è quella di pluralizzare il nome del tipo di enumerazione, come suggerito da Chris S. Secondo le linee guida MS, questo dovrebbe essere usato solo per le enumerazioni flag. Ma mi piace sempre di più. Ora lo uso anche per enumerazioni regolari.