0
期望:从XML文件读取列表中的ints列表,名为itemPool;试图使用DataContractSerializer反序列化整数列表,收到意外的InvalidOperationException
结果:“出现InvalidOperationException:无法添加类型System.Collections.Generic.List`1 [System.Int32]已知类型的集合已经有一个注册类型的XML名称http://schemas.microsoft.com/2003/10/Serialization/Arrays:ArrayOfint。”
我要以下代码:
using System.Collections.Generic;
using System.Runtime.Serialization;
using Characters;
using Items;
[DataContract(Name ="Savefile", Namespace ="")]
public class Savefile
{
[DataMember(Name ="Characters")]
public List<Character> characters = new List<Character>();
[DataMember(Name = "ItemPool")]
public List<int> itemPool = new List<int>();
public void Initialize()
{
foreach (Character c in characters)
c.Initialize();
ItemPool.Load(itemPool.ToArray());
}
}
并用以下方法另一个类:
public static void LoadFromSavefile()
{
DataContractSerializer serializer = new DataContractSerializer(typeof(Savefile));
FileStream stream = new FileStream(Path.Combine(Application.dataPath, _savefilePath), FileMode.Open);
_currentSave = serializer.ReadObject(stream) as Savefile;
stream.Close();
}
而下面的XML的文件,类ABO已经读过。
<?xml version="1.0" encoding="utf-8"?>
<Savefile xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Characters>
<Character>
<... not relevant clutter.../>
</Character>
</Characters>
<ItemPool>
<value>1</value>
</ItemPool>
</Savefile>
我使用的DataContractSerializer,所以我可以序列化的私人领域 - 使用需要进行序列化是不是真的可行的一切公共领域。 我可能在我的op中含糊不清,Item类没有一个名为“value”的字段,就我所知,这只是一个int数组的XML定义。 INT []整数{1} = –
ag4w
我已编辑的文件使用的DataContractSerializer – Programmer
我想你误会我的问题/问题,我不是反序列化项目的列表 - 我试图对一列整数进行反序列化。 由于某种原因,我收到InvalidOperationException。 – ag4w