Xml сериализация не однотипных данных - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени соток. Занимаюсь пониманием xml сериализации и столкнулся с проблемой сериализации не однотипных данных. У меня есть родительский класс и на основе него создаются другие классы, которые в дальнейшем используются в массиве. Не могу понять как можно сериализовать таким образом что бы на выходе я получим массив дочерних классов с соответствующими им полями. Помогите решить проблему.

Решение задачи: «Xml сериализация не однотипных данных»

textual
Листинг программы
  1. class Program {
  2.     static void Main(string[] args) {
  3.         BaseClass[] baseClasses = new BaseClass[] { new A() { I = 1, I1 = 2 }, new A() { I = 3, I1 = 4 }, new B() { I = 5, I2 = 6, I3 = 7 } };
  4.         using (StreamWriter writer = new StreamWriter("test.xml")){
  5.             XmlSerializer serializer = new XmlSerializer(typeof(BaseClass[]));
  6.             serializer.Serialize(writer, baseClasses);
  7.         }
  8.     }
  9. }
  10.  
  11. [XmlInclude(typeof(A))]
  12. [XmlInclude(typeof(B))]
  13. public class BaseClass {
  14.     [XmlAttribute]
  15.     public int I { get; set; }
  16. }
  17.  
  18. [XmlInclude(typeof(A))]
  19. [XmlInclude(typeof(B))]
  20. public class A : BaseClass {
  21.     [XmlAttribute]
  22.     public int I1 { get; set; }
  23. }
  24.  
  25. [XmlInclude(typeof(A))]
  26. [XmlInclude(typeof(B))]
  27. public class B : BaseClass {
  28.     [XmlAttribute]
  29.     public int I2 { get; set; }
  30.     [XmlAttribute]
  31.     public int I3 { get; set; }
  32. }

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут