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