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 序列化。我必须解决问题。第一:引用的整个结构寿命。正如我之前所说:当我更新 AttackType 时,我还需要查看模式的变化。但是当我将其转储到 XML 时,这些联系就丢失了。第二:我序列化 AttackTypes 对象。有关单位的所有详细信息都在那里。当我序列化一个模式时,AttackTypes 的整个列表(包括单位)被再次保存。再次为下一个模式。再次为下一个模式...

有任何想法吗?

4

0 回答 0