我正在编写一个应用程序,它使用具有以下定义的字段的多个子类:
public _ACTION ACTION { get; set; }
public enum _ACTION { INVALID, UPDATE, VALID }
根据该字段中提供的值,稍后会采取行动。虽然只实现了第一个类,但相应的代码如下所示:
switch (action) {
case Class1._ACTION.INVALID:
this.ColorRow(row, StyleNotOK);
break;
case Class1._ACTION.UPDATE:
this.ColorRow(row, StyleUpdate);
break;
case Class1._ACTION.VALID:
break;
}
随着第二个类 (Class2) 的出现,它扩展了与 Class1 相同的基类(以及之后的每个类),switch 会变得更加复杂,我考虑过这样的 switch 语句:
switch (action) {
case Class1._ACTION.INVALID:
case Class2._ACTION.INVALID:
this.ColorRow(row, StyleNotOK);
break;
case Class1._ACTION.UPDATE:
case Class2._ACTION.UPDATE:
this.ColorRow(row, StyleUpdate);
break;
case Class1._ACTION.VALID:
case Class2._ACTION.VALID:
break;
}
但是,我理解它的方式是一个不同的枚举选项由一个值表示。如果表示枚举选项的值将被使用两次,则该切换可能会失败。
一个解决方案是外观,使用基类来定义枚举,但是,我对实现的内部结构感兴趣。您通常可以依赖代表枚举选项的值的唯一性吗?
明月笑刀无情
相关分类