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

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

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

Есть 2 класса: студент и магистр (производный от класса студент)
[Serializable]
    public class бакалавр
    {
        public string фамилия { get; set; }
        public string имя { get; set; }
        public string отчество { get; set; }
        public string факультет { get; set; }
 
        public бакалавр()
        {
        }
 
        public бакалавр(string фамилия, string имя, string факультет)
        {
            this.фамилия = фамилия;
            this.имя = имя;
            this.отчество=отчество;
            this.факультет = факультет;
        }
    }
 
    [Serializable]
    public class магистр : бакалавр
    {
        public double балл { get; set; }
        public string номер { get; set; }
        public DateTime дата { get; set; }
        public магистр()
        { }
 
        public магистр(string фамилия, string имя, string факультет, double балл, string номер, DateTime дата): base(фамилия, имя, отчество, факультет)
        {
            this.балл = балл;
            this.номер = номер;
            this.дата = дата;
        }
    }
В основной программе я создам список list <бакалавр> студент. Одни объекты из этого списка будут принадлежать классу "бакалавр", а другие - классу "магистр". Возможно ли сериализовать в файл XML такой список? Или в нём должны быть объекты только одного класса? Сериализацию планирую делать так:
            SaveFileDialog сохранение_файла = new SaveFileDialog();
            сохранение_файла.Filter = "Файлы XML(*.xml)|*.xml";
            if (сохранение_файла.ShowDialog()==DialogResult.OK)
            {
                XmlSerializer сериализатор = new XmlSerializer(typeof(List<бакалавр>));
                using(FileStream поток=new FileStream(сохранение_файла.FileName, FileMode.OpenOrCreate))
                    сериализатор.Serialize(поток,студент);
            }
Например, мне надо сериализировать такой список:
List<бакалавр> студент = new List<бакалавр>();
            студент.Add(new бакалавр("Петров","Егор","Иванович","Математический"));
            студент.Add(new магистр("Сидоров", "Олег", "Иванович", "Математический", 4.5, "0957432", 
DateTime.Parse("25.09.1999")));

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

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

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


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

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

15   голосов , оценка 3.667 из 5
Похожие ответы