如果一直在序列化一个通用字典,那就这么简单:
using (Stream stream = File.Open(fileName, FileMode.OpenOrCreate, FileAccess.Write))
{
var writer = XmlWriter.Create(stream, new XmlWriterSettings { Indent = true });
var objectType = typeof(T);
var serializer = new DataContractSerializer(objectType);
serializer.WriteObject(writer, objectToSerialize);
writer.Close();
}
其中T为Dictionary<DataSource, bool>
。 DataSource
是自定义类型。现在我在类DataSource
上工作并进行了一些更改,而不更改序列化中涉及的DataContract或属性。
现在,我无法再反序列化XML并获得以下异常:
第1行位置16的错误。期待元素 来自命名空间的'ArrayOfKeyValueOfDataSourcebooleanClMIOMsG' 'http://schemas.microsoft.com/2003/10/Serialization/Arrays' .. 遇到名字的'元素' 'ArrayOfKeyValueOfDataSourcebooleandM5BGXus',命名空间 'http://schemas.microsoft.com/2003/10/Serialization/Arrays'。
我的问题是:
答案 0 :(得分:0)
发现错误:我更改了类DataSource
的命名空间(必须是由ReSharper触发的反射...)。将命名空间更改为原始版本修复了它。 id似乎是命名空间哈希。