Как организовать сериализацию экземпляров класса, содержащего список? - C#
Формулировка задачи:
Есть класс LengthOnPicture, который хранит расстояние и текст:
Есть класс DataPictureClass, который хранит список экземпляров класса LengthOnPicture:
Как организовать сериализацию экземпляров класса DataPictureClass, содержащего список?
Изначально, когда класс DataPictureClass хранил не экземпляры другого класса, а простые (double и string) поля, я использовала следующий механизм:
Но ведь теперь при сериализации нужно знать не только о типе DataPictureClass, но и LengthOnPicture...
В общем, я запуталась, подскажите, пожалуйста, как решить такую проблему?
[Serializable] public class LengthOnPicture { private double length; // расстояние private string length_text; public LengthOnPicture(double Length, string Length_text) { length = Length; length_text = Length_text; } public double Length { get { return length; } } public string Length_text { get { return length_text; } } }
[Serializable] public class DataPictureClass { private List<LengthOnPicture> LOPicture = new List<LengthOnPicture>(); public void AddNewLength(double l, string str) { LengthOnPicture len = new LengthOnPicture(l, str); LOPicture.Add(len); LOPicture.ToArray(); } }
public static string SerializeToString(object obj) { XmlSerializer serializer = new XmlSerializer(obj.GetType()); using (StringWriter writer = new StringWriter()) { serializer.Serialize(writer, obj); return writer.ToString(); } } public static T SerializeFromString<T>(string xml) { XmlSerializer serializer = new XmlSerializer(typeof(T)); using (StringReader reader = new StringReader(xml)) { return (T)serializer.Deserialize(reader); } }
Решение задачи: «Как организовать сериализацию экземпляров класса, содержащего список?»
textual
Листинг программы
[Serializable] public class LengthOnPicture { public LengthOnPicture(double length, string length_text) { Length = length; Length_text = length_text; } [XmlAttribute] // поле можно задать как атрибут public double Length { get; set; } [XmlElement] // поле можно задать как елемент public string Length_text { get; set; } } [Serializable] public class DataPictureClass { public List<LengthOnPicture> LOPicture { get; set; } public DataPictureClass() { LOPicture = new List<LengthOnPicture>(); } public void AddNewLength(double l, string str) { LOPicture.Add(new LengthOnPicture(l, str)); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д