DataContractSerializer,派生类型不反序列化基类型属性

时间:2015-03-04 05:09:06

标签: c# serialization

我曾经使用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();

1 个答案:

答案 0 :(得分:0)

显示您的课程定义。我打赌你错过了一个属性。

相关问题