Я часто обнаруживаю, что реализую класс, поддерживающий какое-то собственное свойство состояния как перечисление: у меня есть свойство перечисления статуса и ОДНОГО статуса типа Status. Как мне разрешить конфликт имен?
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(); }
}
}
Если перечисление состояния было общим для разных типов, я бы поставил его вне класса, и проблема была решена. Но Status применим к Car только потому, что не имеет смысла объявлять enum вне класса.
Какое соглашение об именах вы используете в этом случае?
NB: Этот вопрос был частично обсужден в комментариях ответа этого вопроса. Поскольку это был не главный вопрос, он не получил заметной видимости.
EDIT: Филип Экберг предлагает отличное обходное решение IMO для конкретного случая "Статус". Тем не менее, мне было бы интересно прочитать о решениях, где имя enum/property отличается, как в ответе Майкла Превеки.
EDIT2 (май 2010 г.): Моим любимым решением является плюрализация имени типа перечисления, как это предлагает Крис С. Согласно рекомендациям MS, это должно использоваться только для перечислений флагов. Но мне нравилось все больше и больше. Теперь я использую его для регулярных перечислений.