序列化关系而不是对象

时间:2012-11-15 07:59:07

标签: c# xml-serialization

  

可能重复:
  .net XML Serialization - Storing Reference instead of Object Copy

我正在为游戏创建一个攻击计划器并拥有以下类:

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用于对不同的AttackTypes进行分组。基本上,模式具有对完整AttackType列表的引用,并保存每个AttackType在字典中作为模式一部分的频率。更改AttackType的单位时,更改也会在模式中可见。

现在我想将整个内容保存到光盘并在下次启动程序时加载它。到目前为止,我一直在使用XML序列化。我必须遇到问题。第一:整个结构生活的参考。正如我之前所说:当我更新AttackType时,我也需要看到模式的变化。但是当我将它转储到XML时,这些联系就会丢失。第二:我序列化AttackTypes对象。关于单位的所有细节都在那里。当我序列化模式时,将再次保存整个AttackTypes列表(包括单位)。再次为下一个模式。再次为下一个模式...

有什么想法吗?

0 个答案:

没有答案