1

重複の可能性:
.net XML シリアライゼーション - オブジェクト コピーの代わりに参照を保存

ゲームの攻撃プランナーを作成しており、次のクラスがあります。

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 (ユニットを含む) のリスト全体が再度保存されます。そしてまた次のパターンへ。そしてまた次のパターンへ…

何か案は?

4

0 に答える 0