ゲームでスコアのシリアライズに奇妙な問題が発生しています。列挙型のキー、Level
でBinaryFormatterの逆シリアル化に影響を及ぼす列挙の序数?
[System.Serializable]
public class LevelHighScores
{
readonly Dictionary<Level, ModeScores> scores;
// clipped out the rest for simplicity
}
:
私はLevelHighScoreクラスを持っています。
私は最近、新しいレベルをゲームに追加しましたが、新しいレベルを列挙の最後に追加するのではなく、新しい列挙をアルファベット順に追加しました。ゲームをロードすると、新しいレベルには既存のスコアが関連付けられているため、列挙型の序数がシリアライゼーション/デシリアライゼーションに影響していると思うようになります。
将来的にレベルを追加する際にこの問題を回避することは避けたいと考えています。また、enumの最後にレベルを追加することだけを覚えておく必要はありません。
遡及的に新しい値を追加する場合でも、列挙型が一貫してデシリアライズされるようにする方法はありますか?
レベルキー付き辞書の代わりに 'Dictionary'を使うと、効果的な回避策のようです。列挙型の型安全性は失われますが。他の提案を聞くのが大好きです。 –
順序が重要でないように、enum値を明示的に割り当てることができます。 https://stackoverflow.com/questions/1681285/pros-and-cons-explicitly-setting-enum-fields-values – dbc
@dbcを参照してください。これは良い提案です。回答を拡大する必要があります –