XML-Сериализация списка объектов двух классов - C#

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

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

Есть 2 класса: студент и магистр (производный от класса студент)
Листинг программы
  1. [Serializable]
  2. public class бакалавр
  3. {
  4. public string фамилия { get; set; }
  5. public string имя { get; set; }
  6. public string отчество { get; set; }
  7. public string факультет { get; set; }
  8. public бакалавр()
  9. {
  10. }
  11. public бакалавр(string фамилия, string имя, string факультет)
  12. {
  13. this.фамилия = фамилия;
  14. this.имя = имя;
  15. this.отчество=отчество;
  16. this.факультет = факультет;
  17. }
  18. }
  19. [Serializable]
  20. public class магистр : бакалавр
  21. {
  22. public double балл { get; set; }
  23. public string номер { get; set; }
  24. public DateTime дата { get; set; }
  25. public магистр()
  26. { }
  27. public магистр(string фамилия, string имя, string факультет, double балл, string номер, DateTime дата): base(фамилия, имя, отчество, факультет)
  28. {
  29. this.балл = балл;
  30. this.номер = номер;
  31. this.дата = дата;
  32. }
  33. }
В основной программе я создам список list <бакалавр> студент. Одни объекты из этого списка будут принадлежать классу "бакалавр", а другие - классу "магистр". Возможно ли сериализовать в файл XML такой список? Или в нём должны быть объекты только одного класса? Сериализацию планирую делать так:
Листинг программы
  1. SaveFileDialog сохранение_файла = new SaveFileDialog();
  2. сохранение_файла.Filter = "Файлы XML(*.xml)|*.xml";
  3. if (сохранение_файла.ShowDialog()==DialogResult.OK)
  4. {
  5. XmlSerializer сериализатор = new XmlSerializer(typeof(List<бакалавр>));
  6. using(FileStream поток=new FileStream(сохранение_файла.FileName, FileMode.OpenOrCreate))
  7. сериализатор.Serialize(поток,студент);
  8. }
Например, мне надо сериализировать такой список:
Листинг программы
  1. List<бакалавр> студент = new List<бакалавр>();
  2. студент.Add(new бакалавр("Петров","Егор","Иванович","Математический"));
  3. студент.Add(new магистр("Сидоров", "Олег", "Иванович", "Математический", 4.5, "0957432",
  4. DateTime.Parse("25.09.1999")));

Решение задачи: «XML-Сериализация списка объектов двух классов»

textual
Листинг программы
  1. [XmlInclude(typeof(магистр))]
  2. public class бакалавр
  3. {
  4. ...

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


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

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

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

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

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

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