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; }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5