Сериализация списка классов (нескольких классов) - C#

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

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

Ув.. Знаю, что данный вопрос неоднократно поднимался и здесь существует огромное количество тем. Но у меня ситуация нестандартного характера и все никак не могу найти удачное и корректное решение. Надеюсь на вашу помощь! В общем задача такова: Нужно сделать сохранение классов с заполненными полями в файл, а затем сделать загрузку из файла этих данных. Классы выглядят так:
Листинг программы
  1. [Serializable]
  2. public class CustomObject
  3. {
  4. public int id { get; set; }
  5. public string type { get; set; }
  6. public string inner_name { get; set; }
  7. public int speed {get; set;}
  8. public int height {get; set;}
  9. public int width {get; set;}
  10. }
  11. [Serializable]
  12. public class TheCar : CustomObject
  13. {
  14. public Color color {get; set;}
  15. public string mark {get; set;}
  16. // ...
  17. public TheCar()
  18. {
  19. // ...
  20. }
  21. }
  22. // ...
  23. public class ObjectsCache
  24. {
  25. static List<CustomObject> AllObjects { get; set; }
  26. static List<TheCar> Cars { get; set; }
  27. static List<ThePlane> Planes { get; set; }
  28. static List<TheShip> Ships { get; set; }
  29. // ...
  30. AllObjects = new List<CustomObject>();
  31. Cars = new List<TheCar>();
  32. Planes = new List<ThePlane>();
  33. Ships = new List<TheShip>();
  34. static int incrementId = 0;
  35. public static int NextId()
  36. {
  37. return ++incrementId;
  38. }
  39. public static void AddNewCar(TheCar car)
  40. {
  41. car.id = NextId();
  42. AllObjects.Add(car);
  43. Cars.Add(car);
  44. }
  45. // ...
  46. }
  47. public class GlobalVariables
  48. {
  49. public static string state { get; set; }
  50. public static string city { get; set; }
  51. public static string country { get; set; }
  52. public static int time { get; set; }
  53. // ...
  54. }
CustomObject - обобщенная модель (родитель для TheCar, TheShip, ThePlane) TheCar, TheShip, ThePlane - соответственно наследуются от CustomObject, дополняя своими свойствами При создании нового экземпляра любого из этих классов, обьект добавляется в список AllObjects а затем в список подходящий под свой тип (например Cars), по коду выше видно Каждый класс содержит уникальный айди, который при создании обьекта инкрементируется и записывается через ObjectsCache. *** Подводя итог, нужно сохранить в файл / загружать из файла (желательно все в одном файле) 1) списки классов:
Листинг программы
  1. static List<CustomObject> AllObjects { get; set; }
  2. static List<TheCar> Cars { get; set; }
  3. static List<ThePlane> Planes { get; set; }
  4. static List<TheShip> Ships { get; set; }
2) Последний айди из ObjectsCache (т.е. значение incrementId) 3) А так же класс глобальных переменных GlobalVariables Помогите пожалуйста!!!

Решение задачи: «Сериализация списка классов (нескольких классов)»

textual
Листинг программы
  1.         [Serializable]
  2.         public class GameState
  3.         {
  4.             public List<CustomObject> AllObjects { get; set; }
  5.             public List<TheCar> Cars { get; set; }
  6.             ...
  7.             public string State { get; set; }
  8.             public string City { get; set; }
  9.             public string Country { get; set; }
  10.             public int Time { get; set; }
  11.  
  12.             //
  13.             public static GameState Instance { get; private set; }
  14.  
  15.             public static void CreateInstance()
  16.             {
  17.                 Instance = new GameState();
  18.             }
  19.  
  20.             public static void LoadInstance(string fileName)
  21.             {
  22.                 using (var st = File.OpenRead(fileName))
  23.                     Instance = (GameState)new BinaryFormatter().Deserialize(st);
  24.             }
  25.  
  26.             public static void SaveInstance(string fileName)
  27.             {
  28.                 ...
  29.             }
  30.         }

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


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

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

7   голосов , оценка 3.857 из 5

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

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

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