我有一个从集合继承的类,特别是 List<> 并且我在下面列出了该类。当我使用 DataContractSerializer 将对象序列化为 XML 时遇到的问题是我在对象中添加的附加字段没有被序列化器序列化。
这是课程:
[CollectionDataContract(Name = "ServiceEvents", Namespace = "")]
public class ServiceEventList : List<ServiceEvent>
{
[DataMember]
public long StaleDate { get; set; }
[DataMember]
public long ExpirationDate { get; set; }
}
当我序列化对象并写入磁盘时,这是输出(注意 StaleDate 和 ExpirationDate 都丢失了)。
<ServiceEvents xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><ServiceEvent><Date>2012-06-26T22:23:24.120817Z</Date><Description>A Service Event</Description><Id>634763462041210040</Id><Notes></Notes><Odometer>42</Odometer></ServiceEvent></ServiceEvents>
下面是序列化对象的代码:
using (FileStream fs = new FileStream(path, FileMode.Create))
{
//TODO: StaleDate is not serializing to disk
//TODO: ExpirationDate is not serializing to disk
DataContractSerializer ser = new DataContractSerializer(typeof(ServiceEventList));
ser.WriteObject(fs, list);
}
我的下一个想法是删除继承结构并将 List 对象嵌入到类中。我宁愿只扩展 List 但如果社区确认我的方法行不通,我不会在上面浪费更多时间。提前感谢您的建议。