枚举和属性命名冲突

当使用具有枚举属性的类时,通常会在属性名称和枚举types之间产生命名冲突。 例:

enum Day{ Monday, Tuesday, ... } class MyDateClass { private Day day; public Day Day{ get{ return day; } } } 

由于只有标志枚举应该有复数名称,命名枚举“天”不是一个非标志枚举的方式。 在上面的例子中,你可以使用一些像“WeekDay”这样的变体来枚举或者属性。 但在一般情况下,没有像这样的好的变体,所以你最终使用像“FooMode”或“BarKind”的属性,具有Foo和Bartypes的枚举属性的对象。 不那么优雅。

在这种情况下,你通常如何命名枚举和属性?


感谢您的快速回复。 另一个问题:为什么不build议嵌套公共枚举,如果要嵌套公共枚举,如何解决命名问题?

 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等?

没有冲突。 实际上, .NET框架样式指南鼓励您这样做 ,例如,如果您有一个具有types的单个属性的类(不pipe是枚举还是类),那么您应该将其命名为相同。 典型的例子是Colortypes的Color属性。 这很好,除非有两种颜色 – 在这种情况下,两者都应该添加一些名称(即BackColor和ForeColor,而不是颜色和BackColor)。

只要枚举不嵌套在MyDateClass中,我不会看到这是一个问题。 根据我的经验,有一个与它返回的types同名的属性是非常罕见的。 我会看看是否可以在框架中find一些示例…

编辑:第一个例子:DateTimeOffset.DateTime(不是一个枚举,但这有点不相关)