可能重复:
.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列表(包括单位)。再次为下一个模式。再次为下一个模式...
有什么想法吗?