【发布时间】:2017-12-24 22:35:15
【问题描述】:
我目前正在编写一个由展品组成的巡演软件程序。展览对象在任何给定点都处于由 ExhibitStates 枚举定义的四种状态之一:
private enum ExhibitState { Ready, Active, Complete, Inactive };
对于将要设置展览的开发者,我希望他们能够选择的只有两种“开始”状态:
public enum StartingExhibitState { Ready, Inactive };
目前,我对其进行了设置,以便在初始化后,展览将立即设置其状态以匹配其起始状态,如下所示:
switch (startingState) {
case StartingExhibitState.Ready:
SetState(ExhibitState.Ready);
break;
case StartingExhibitState.Inactive:
SetState(ExhibitState.Inactive);
break;
}
我发现自己今天想知道这是否是最佳做法。有没有更好的方法来限制哪些枚举选项是公共的,哪些是私有的?还是最好简单地拥有两个单独的枚举?
非常感谢您的宝贵时间。
【问题讨论】:
-
限制类中枚举值的“设置”不是更容易吗?
-
你的 switch 语句的设置方式,你可以简单地一次设置状态,或者设置一次你不想使用的情况,一次打破它们,然后设置默认动作中的状态。我还假设一个状态是否真的可以从非活动状态切换到完成状态是有逻辑的?
-
您可以默认为
Inactive并提供SetReady方法,完全不需要传递起始状态。
标签: c# enums private encapsulation public