0
我有一个类继承了一个集合,特别是列表<>,并且列出了下面的类。我使用DataContractSerializer将对象序列化到XML时遇到的问题是我在对象中添加的其他字段没有被序列化器序列化。
这里是类:使用CollectionDataContactAttribute序列化其他字段
[CollectionDataContract(Name = "ServiceEvents", Namespace = "")]
public class ServiceEventList : List<ServiceEvent>
{
[DataMember]
public long StaleDate { get; set; }
[DataMember]
public long ExpirationDate { get; set; }
}
当我序列化对象,并写入到磁盘,这里是输出(注意两者StaleDate和到期日期失踪)。
<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,但不会浪费更多时间。预先感谢您的建议。
同意;感谢您链接到另一个线程。他们对“_WCF如何将收藏当作T [] _”的线材的解释有助于平息我的好奇心。我会将我的实现恢复为只包含List 集合作为类内的属性,而不是继承列表。 –
benhorgen