我曾经使用JobData
序列化和反序列化了一个类DataContractSerializer
;我已经将JobData
的一些属性重构为BaseData
,因此可以在其他派生类中使用它们。现在,当我反序列化对象时,只有JobData
中保留的属性被反序列化,而BaseData
中的属性则不被反序列化。重要的是我能够在重构完成之前反序列化创建的文件。
我尝试过使用构造函数
DataContractSerializer Constructor (Type, IEnumerable<Type>)
让它了解BaseData
,并将[KnownType(typeof(BaseData))]
添加到JobData
课程的顶部,但我在网上发布的其他网页上看到的任何内容似乎都无效。< / p>
XmlReader xmlReader = XmlReader.Create(stream);
DataContractSerializer serializer = new DataContractSerializer(typeof(JobData), new List<Type>{typeof(BaseData)});
JobData deserializedData = (JobData)serializer.ReadObject(xmlReader);
xmlReader.Close();
答案 0 :(得分:0)
显示您的课程定义。我打赌你错过了一个属性。