Сериализация списка классов (нескольких классов) - C#
Формулировка задачи:
Ув.. Знаю, что данный вопрос неоднократно поднимался и здесь существует огромное количество тем. Но у меня ситуация нестандартного характера и все никак не могу найти удачное и корректное решение. Надеюсь на вашу помощь!
В общем задача такова:
Нужно сделать сохранение классов с заполненными полями в файл, а затем сделать загрузку из файла этих данных.
Классы выглядят так:
CustomObject - обобщенная модель (родитель для TheCar, TheShip, ThePlane)
TheCar, TheShip, ThePlane - соответственно наследуются от CustomObject, дополняя своими свойствами
При создании нового экземпляра любого из этих классов, обьект добавляется в список AllObjects а затем в список подходящий под свой тип (например Cars), по коду выше видно
Каждый класс содержит уникальный айди, который при создании обьекта инкрементируется и записывается через ObjectsCache.
***
Подводя итог, нужно сохранить в файл / загружать из файла (желательно все в одном файле)
1) списки классов:
2) Последний айди из ObjectsCache (т.е. значение incrementId)
3) А так же класс глобальных переменных GlobalVariables
Помогите пожалуйста!!!
[Serializable] public class CustomObject { public int id { get; set; } public string type { get; set; } public string inner_name { get; set; } public int speed {get; set;} public int height {get; set;} public int width {get; set;} } [Serializable] public class TheCar : CustomObject { public Color color {get; set;} public string mark {get; set;} // ... public TheCar() { // ... } } // ... public class ObjectsCache { static List<CustomObject> AllObjects { get; set; } static List<TheCar> Cars { get; set; } static List<ThePlane> Planes { get; set; } static List<TheShip> Ships { get; set; } // ... AllObjects = new List<CustomObject>(); Cars = new List<TheCar>(); Planes = new List<ThePlane>(); Ships = new List<TheShip>(); static int incrementId = 0; public static int NextId() { return ++incrementId; } public static void AddNewCar(TheCar car) { car.id = NextId(); AllObjects.Add(car); Cars.Add(car); } // ... } public class GlobalVariables { public static string state { get; set; } public static string city { get; set; } public static string country { get; set; } public static int time { get; set; } // ... }
static List<CustomObject> AllObjects { get; set; } static List<TheCar> Cars { get; set; } static List<ThePlane> Planes { get; set; } static List<TheShip> Ships { get; set; }
Решение задачи: «Сериализация списка классов (нескольких классов)»
textual
Листинг программы
[Serializable] public class GameState { public List<CustomObject> AllObjects { get; set; } public List<TheCar> Cars { get; set; } ... public string State { get; set; } public string City { get; set; } public string Country { get; set; } public int Time { get; set; } // public static GameState Instance { get; private set; } public static void CreateInstance() { Instance = new GameState(); } public static void LoadInstance(string fileName) { using (var st = File.OpenRead(fileName)) Instance = (GameState)new BinaryFormatter().Deserialize(st); } public static void SaveInstance(string fileName) { ... } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д