作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将(再次)使用以下类层次结构:
Event
并且以下所有类都继承自 Event:
SportEventType1 SportEventType2 SportEventType3 SportEventType4
我最初设计的Event类是这样的:
public abstract class Event
{
public abstract EventType EventType { get; }
public DateTime Time { get; protected set; }
protected Event(DateTime time) {
Time = time;
}
}
EventType 定义为:
public enum EventType {
Sport1,
Sport2,
Sport3,
Sport4
}
最初的想法是每个 SportEventTypeX 类都会设置其正确的 EventType。现在想起来,我认为这种做法是完全错误的,原因如下:
遇到这种情况你会怎么解决?在事件类中定义一个抽象的“描述”属性,让每个子类实现它?让属性(Java 中的注释!)设置其描述变量?在这种情况下,使用类变量而不是属性/注释有什么优点/缺点?还有其他更优雅的解决方案吗?
谢谢
最佳答案
如果您的子类将是 EventType,我不会为 EventType 进行枚举。枚举适用于一组固定的选项 - 在您的情况下,您需要继承的灵 active ,因此只需直接使用子类化即可。
如果这只是一个描述问题,我会这样做:
public abstract class Event
{
public string Description { get; private set;}
public DateTime Time { get; protected set; }
protected Event(string description, DateTime time) {
this.Description = description;
Time = time;
}
}
这只是让您的子类为您指定这一点,而且听起来这就是您所追求的。
关于c# - 枚举和继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2589083/
我是一名优秀的程序员,十分优秀!