У меня есть класс, который наследуется от коллекции, в частности List‹>, и я перечислил класс ниже. Проблема, с которой я сталкиваюсь при сериализации объекта в XML с помощью DataContractSerializer, заключается в том, что дополнительные поля, которые я добавил в объект, не сериализуются сериализатором.
Вот класс:
[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 в класс. Я бы предпочел просто расширить список, но не буду тратить на это больше времени, если сообщество подтвердит, что мой подход не работает. Заранее спасибо за совет.