値の追加変更に柔軟なenumの使い方
enumをシリアライズする必要のあるプログラムを設計しています。
enumの値を変更するとシリアライズしたデータが矛盾するということは理解していますが、運用開始後も仕様変更によるenum値の変更が回避できません。
enumは変更に対して柔軟ではないように思えますが、よいenumの使い方はあるでしょうか?
あるいは、enum以外の方法(文字列を使うなど)がよいのでしょうか?
具体的には下記のようにTokenType
を定義しています。
TokenType
はtokenType <= TokenType.SystemC
のような条件の使い方もします。
また、Token
はDictionary
のキーとして使用します
[Serializable]
public enum TokenType : ushort
{
Empty = 0,
SystemA = 1,
SystemB = 2,
SystemC = 3,
PluginX = 256,
// 今後 SystemD や PluginY が追加される可能性がある
}
[Serializable]
public struct Token
{
public TokenType Type;
public ushort ID;
}