Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

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

73K
05 июня 2015 года
folks
5 / / 24.01.2014
Ув. форумчане. Знаю, что данный вопрос неоднократно поднимался и здесь существует огромное количество тем. Но у меня ситуация нестандартного характера и все никак не могу найти удачное и корректное решение. Надеюсь на вашу помощь!

В общем задача такова:

Нужно сделать сохранение классов с заполненными полями в файл, а затем сделать загрузку из файла этих данных.

Классы выглядят так:
Код:
[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; }
       
        // ...
    }
CustomObject - обобщенная модель (родитель для TheCar, TheShip, ThePlane)
TheCar, TheShip, ThePlane - соответственно наследуются от CustomObject, дополняя своими свойствами

При создании нового экземпляра любого из этих классов, обьект добавляется в список AllObjects а затем в список подходящий под свой тип (например Cars), по коду выше видно

Каждый класс содержит уникальный айди, который при создании обьекта инкрементируется и записывается через ObjectsCache.

***

Подводя итог, нужно сохранить в файл / загружать из файла (желательно все в одном файле)

1) списки классов:
static List<CustomObject> AllObjects { get; set; }
static List<TheCar> Cars { get; set; }
static List<ThePlane> Planes { get; set; }
static List<TheShip> Ships { get; set; }

2) Последний айди из ObjectsCache (т.е. значение incrementId)

3) А так же класс глобальных переменных GlobalVariables

Помогите пожалуйста!!!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог