私は現在ツアー用のソフトウェアプログラムを作成しており、展示品で構成されています。展示物は、任意の時点で、ExhibitStates列挙型で定義された四つの状態、のいずれかにされています。展示を設定します開発者のためにC#で公開列挙値を制限することはできますか?
private enum ExhibitState { Ready, Active, Complete, Inactive };
、私はそれらをしたい2つだけ、「開始」の状態が存在します中から選択できるようにする:現在
public enum StartingExhibitState { Ready, Inactive };
、私はそれが初期化されるとなるように設定している、展示はすぐにそうように、その開始状態に合わせて、その状態を設定します:
switch (startingState) {
case StartingExhibitState.Ready:
SetState(ExhibitState.Ready);
break;
case StartingExhibitState.Inactive:
SetState(ExhibitState.Inactive);
break;
}
これがベストプラクティスだったかどうか、私は今日疑問に思いました。どのenumオプションがpublicかprivateかを制限する良い方法はありますか?または、単に2つの別々の列挙型を持つのが最善でしょうか?
ありがとうございました。
あなたのクラスのenum値の "設定"を制限する方が簡単ではないでしょうか? – maccettura
switchステートメントの設定方法は、単にステートを一度に設定したり、使用したくないケースを設定したり、一度に中断したり、デフォルトアクションでステートを設定したりすることができます。私は、状態が本当に非アクティブから完全に切り替えることができるかどうかという論理もあると思います。 – Icepickle
デフォルトでは 'Inactive'になり、' SetReady'メソッドを提供して、開始状態をまったく渡す必要がなくなります。 –