ゲームの攻撃プランナーを作成しており、次のクラスがあります。
public class AttackTypes : ObservableCollection<AttackType> { }
public class AttackType
{
public AttackTypeEnum Type { get; set; }
public Units units { get; set; }
public string Name { get; set; }
public AttackType()
{
units = new Units();
}
}
public class AttackPatterns : ObservableCollection<AttackPattern> { }
public class AttackPattern
{
public string Name { get; set; }
SerializableDictionary<AttackType, int> Count { get; set; }
public AttackPattern(AttackTypes types)
{
Count = new SerializableDictionary<AttackType, int>();
foreach (AttackType item in types) { Count.Add(item, 0); }
}
}
AttackType には、送信したいユニットに関する情報が保持されます。ユーザーが作成できる特殊なタイプは 5 ~ 10 個です。AttackPattern は、異なる AttackType をグループ化するために使用されます。基本的に、パターンは完全な AttackType リストへの参照を持ち、各 AttackType がパターンの一部である頻度をディクショナリに保存します。AttackType のユニットが変更されると、その変更はパターンにも表示されます。
ここで、すべてをディスクに保存し、次回プログラムを起動するときにロードしたいと考えています。これまで、XML シリアライゼーションを使用してきました。そして、私は問題を抱えています。1 つ目: 構造全体が参照に生きています。前に言ったように、AttackType を更新するときは、パターンの変更も確認する必要があります。しかし、XML にダンプすると、これらの関係は失われます。2 番目: AttackTypes オブジェクトをシリアル化します。ユニットに関するすべての詳細がそこにあります。パターンをシリアル化すると、AttackTypes (ユニットを含む) のリスト全体が再度保存されます。そしてまた次のパターンへ。そしてまた次のパターンへ…
何か案は?