XML-Сериализация списка объектов двух классов - C#
Формулировка задачи:
Есть 2 класса: студент и магистр (производный от класса студент)
В основной программе я создам список list <бакалавр> студент. Одни объекты из этого списка будут принадлежать классу "бакалавр", а другие - классу "магистр".
Возможно ли сериализовать в файл XML такой список? Или в нём должны быть объекты только одного класса?
Сериализацию планирую делать так:
Например, мне надо сериализировать такой список:
[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.дата = дата; } }
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 бакалавр { ...
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д