【发布时间】:2010-01-14 08:49:25
【问题描述】:
我知道你不能对枚举使用继承,所以在我的基类中我想定义实现它的类必须为属性返回某种类型的枚举。
理想情况下,应该是这样的:
public abstract BaseEnum MyEnum { get; set; }
那么所有的实现者都必须返回某种形式的枚举。但显然 BaseEnum 不存在。我可以使用对象,但我不想这样做。
有什么好的方法吗?
编辑:我问这个是因为我本质上想在实现类中保持属性的名称相同 - 我知道我将无法使用枚举基类,但如果我不把它放在基类中,那么实现类可以决定它们自己的枚举属性名称,随着时间的推移,这可能会变得不清楚,因为它们会转向自己的实现。
【问题讨论】:
-
虽然枚举继承自
System.Enum结构,但您不能真正让派生类更改返回类型。被覆盖的方法也必须声明其返回类型System.Enum。 -
我很想听听这个问题的“为什么”,枚举不存在继承,因为它没有真正意义:它们只是字节映射,所以不是真的可以互换吗? (例如,我不认为 ListItemType 可以与 DayOfWeek 互换)
-
我认为您的问题更多是社会问题而不是技术问题。您不需要在基类中指定它。只需在某处添加注释并记录应使用的样式和属性名称。
-
我不一定认为它会被滥用,更多的是我喜欢我的基类尽可能地定义好!
标签: c# inheritance enums base-class