1
我有下面的类结构 C#XML(DE)孩子的序列化对象
[Serializable]
public class Manager
{
List<item> items
List<Mod> mods
[XmlArray("Items"), XmlArrayItem(typeof(Item), ElementName = "Item")]
public List<Item> Items
{
get
{
return items;
}
}
[XmlArray("Mods"), XmlArrayItem(typeof(Mod), ElementName = "Mod")]
public List<Mod> Mods
{
get
{
return mods;
}
}
}
[Serializable]
public class Item
{
string name;
Mod mod;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public Mod Mod
{
get
{
return mod;
}
set
{
mod = value;
}
}
private Item()
{ }
public Item(string name, Mod mod)
{
this.Name = name;
this.Mod = mod;
}
}
系列化去如预期,但是当我反序列化我想item.Mod对象指向MODS的对象名单。相反,它会创建一个新的实例。 有没有办法做到这一点?
我现在做的是手动收集正确的情况下,反序列化后
foreach (Item item in instance.Items)
{
item.Mod = instance.Mods.Find(x => x.Name == item.Mod.Name);
}
如果是不可能的,那么有没有办法只能序列化mod.Name的项目吗? (所以mod本身应该完全序列化,但item.mod只应该序列化名称)
我现在正在做的是手动将item.mod设置为我在mod列表中找到的mod。那是你在说什么? foreach(Item中的item.Items) { item.Mod = instance.Mods.Find(x => x.Name == item.Mod.Name); } – Patrick 2013-03-13 14:35:49
是的,正是:)。我有同样的问题,并以同样的方式解决它。 – virious 2013-03-13 15:15:27