У меня есть базовый класс, который реализует ряд свойств, которые я хочу сохранить, и производный класс, который содержит дополнительные свойства, которые я не хочу хранить (они могут быть довольно большими).У меня есть контейнерный класс, который содержит список базового класса, который, в свою очередь, содержит смесь экземпляров базового класса и его производного класса.Я создаю XMLSerializer для класса контейнера, но при сериализации он жалуется, что производный класс не включен.
Есть ли способ заставить сериализатор выводить только базовый класс XML, независимо от типа экземпляра?
Обратите внимание, я не хочу использовать XMLInclude, поскольку я специально не хочу сохранять какие-либо свойства в производном классе.
(Упрощенный пример кода)
public class MyBase {
public String Title { get; set; }
}
public class MyDerived : MyBase {
public String Details { get; set; }
}
public class Container {
private static XmlSerializer sSerializer = new XmlSerializer(typeof(Container));
public List<MyBase> mBases { get; set; }
public void MyProblem() {
mBases = new List<MyBase>();
mBases.Add(new MyBase { Title = "One" });
mBases.Add(new MyDerived { Title = "Two", Details = "An incredibly long string" });
using (var lWriter = XmlWriter.Create("C:\\Temp\\output.xml")) {
sSerializer.Serialize(lWriter, this);
}
}
}