Xml сериализация не однотипных данных - C#
Формулировка задачи:
Доброго времени соток. Занимаюсь пониманием xml сериализации и столкнулся с проблемой сериализации не однотипных данных. У меня есть родительский класс и на основе него создаются другие классы, которые в дальнейшем используются в массиве. Не могу понять как можно сериализовать таким образом что бы на выходе я получим массив дочерних классов с соответствующими им полями. Помогите решить проблему.
Решение задачи: «Xml сериализация не однотипных данных»
textual
Листинг программы
class Program {
static void Main(string[] args) {
BaseClass[] baseClasses = new BaseClass[] { new A() { I = 1, I1 = 2 }, new A() { I = 3, I1 = 4 }, new B() { I = 5, I2 = 6, I3 = 7 } };
using (StreamWriter writer = new StreamWriter("test.xml")){
XmlSerializer serializer = new XmlSerializer(typeof(BaseClass[]));
serializer.Serialize(writer, baseClasses);
}
}
}
[XmlInclude(typeof(A))]
[XmlInclude(typeof(B))]
public class BaseClass {
[XmlAttribute]
public int I { get; set; }
}
[XmlInclude(typeof(A))]
[XmlInclude(typeof(B))]
public class A : BaseClass {
[XmlAttribute]
public int I1 { get; set; }
}
[XmlInclude(typeof(A))]
[XmlInclude(typeof(B))]
public class B : BaseClass {
[XmlAttribute]
public int I2 { get; set; }
[XmlAttribute]
public int I3 { get; set; }
}