При использовании класса, обладающего свойством enum, обычно возникает конфликт имен между именем свойства и типом enum. Пример:
enum Day{ Monday, Tuesday, ... }
class MyDateClass
{
private Day day;
public Day Day{ get{ return day; } }
}
Так как только перечисления флагов должны иметь множественные имена, присвоение имени перечислению «Дни» не является подходящим способом для перечисления без флага. В приведенном выше примере вы можете использовать некоторые варианты, такие как «WeekDay» для перечисления или свойства. Но в общем случае нет хороших вариантов, подобных этому, поэтому вы в конечном итоге используете такие свойства, как «FooMode» или «BarKind» для объекта со свойствами перечисления типа Foo и Bar. Не так элегантно.
Как вы обычно называете перечисления и свойства в этом сценарии?
Спасибо за быстрые ответы. Другой вопрос: почему не рекомендуется вкладывать публичные перечисления и как вы решаете проблемы именования, если хотите вкладывать публичные перечисления?
class Vehicle
{
enum Kind{ Car, Bike }
public Kind Kind{ get{ return ... } }
}
class Meal
{
enum Kind{ Dessert, MainCourse }
public Kind Kind{ get{ return ... } }
}
В приведенном выше сценарии, учитывая, что Meal и Vehicle совместно используют одно и то же пространство имен, я не могу переместить "Kind" за пределы одного из классов, не переименовав его в MealKind и VehicleKind соответственно. Мне нравится внешний вид
myVehicle.Kind = Vehicle.Kind.Car
Но это не то, что рекомендуют руководящие принципы. Какова будет лучшая практика здесь? Никогда не использовать вложенные публичные перечисления и вместо этого называть их VehicleKind и т. Д.?