Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 20.05.2015
Сообщений: 1

Сериализация поля типа ArrayList

10.04.2016, 18:49. Показов 1576. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сериализовать поле типа ArrayList?
По заданию есть класс "Заказ" (Order), в нем должен хранится массив объектов класс "блюдо", и метод для добавления блюд. Хранятся в ArrayList'e. Необходимо при сериализации сохранять список блюд для каждого заказа. Как это сделать?
C#
1
2
3
4
5
6
7
8
9
10
public class Order
{
ArrayList foodList = new ArrayList;
...
// добавление блюд к текущему заказу
public void AddFood(Dish dish)
{
...
}
}
Сами заказы тоже хранятся в ArrayList'е:
C#
1
public static ArrayList Orders = new ArrayList();
Получается сериализовать класс Order все кроме списка блюд. Т.е. на выходе получается следующее:
XML
1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8"?>
<Order xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ПОВАР>Имя Фамилия</ПОВАР>
  <НОМЕР_ЗАКАЗА>1</НОМЕР_ЗАКАЗА>
  <СУММА>18</СУММА>
  <ДАТА>10.4.2016</ДАТА>
</Order>
А должно быть примерно следующее:
XML
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="utf-8"?>
<Order xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ПОВАР>Имя Фамилия</ПОВАР>
  <НОМЕР_ЗАКАЗА>1</НОМЕР_ЗАКАЗА>
  <БЛЮДА>
  <БЛЮДО1>...</БЛЮДО1>
  <БЛЮДО2>...</БЛЮДО1>  
  <БЛЮДО3>...</БЛЮДО1>  
  </БЛЮДА>
  <СУММА>18</СУММА>
  <ДАТА>10.4.2016</ДАТА>
</Order>
Добавлено через 3 часа 2 минуты
Решено. Вместо ArrayList использую List:
C#
1
2
3
4
5
6
[Serializable]
    public class Order
    {
        public List<Dish> food_list = new List<Dish>();
        ....
    }
C#
1
2
3
4
5
6
7
8
9
Order order = new Order();
            FileStream fs = new FileStream("file.xml", FileMode.OpenOrCreate);
            XmlSerializer sr = new XmlSerializer(typeof(Order));
            for (int i = 0; i < Form1.Orders.Count; i++)
            {
                order = (Order)Form1.Orders[i];
                sr.Serialize(fs, order);
            }
            fs.Close();
Результат:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?xml version="1.0"?>
<Order xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <food_list>
    <Dish>
      <БЛЮДО>Суп зеленый</БЛЮДО>
      <ЦЕНА>15</ЦЕНА>
      <ВРЕМЯ>30</ВРЕМЯ>
      <КАТЕГОРИЯ>FIRST_FOOD</КАТЕГОРИЯ>
    </Dish>
    <Dish>
      <БЛЮДО>Рис с мясом</БЛЮДО>
      <ЦЕНА>15</ЦЕНА>
      <ВРЕМЯ>30</ВРЕМЯ>
      <КАТЕГОРИЯ>SECOND_FOOD</КАТЕГОРИЯ>
    </Dish>
    <Dish>
      <БЛЮДО>Соленые помидоры</БЛЮДО>
      <ЦЕНА>10</ЦЕНА>
      <ВРЕМЯ>5</ВРЕМЯ>
      <КАТЕГОРИЯ>COLD_STRATERS</КАТЕГОРИЯ>
    </Dish>
    <Dish>
      <БЛЮДО>Пироженное</БЛЮДО>
      <ЦЕНА>5</ЦЕНА>
      <ВРЕМЯ>1</ВРЕМЯ>
      <КАТЕГОРИЯ>DESERT</КАТЕГОРИЯ>
    </Dish>
    <Dish>
      <БЛЮДО>Вино</БЛЮДО>
      <ЦЕНА>15</ЦЕНА>
      <ВРЕМЯ>1</ВРЕМЯ>
      <КАТЕГОРИЯ>DRINKS</КАТЕГОРИЯ>
    </Dish>
  </food_list>
  <ПОВАР>Имя Фамилия</ПОВАР>
  <НОМЕР_ЗАКАЗА>1</НОМЕР_ЗАКАЗА>
  <СУММА>60</СУММА>
  <ДАТА>10.4.2016</ДАТА>
</Order>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.04.2016, 18:49
Ответы с готовыми решениями:

Элементы ArrayList записать в поля класса
Всем доброго дня ! Вопрос состоит в том что бы элементы ArrayList записать в class Student class Student : IComparable { ...

Сериализация не учитывает поля унаследованных классов
Доброго времени суток. Есть абстрактный класс Card c 4-мя полями и два класс производные от него A и B. Пытаюсь сериализавать...

Сериализация поля только для чтения
Здравствуйте. Есть класс: public class myClass { public myClass(int x, int y) { X =...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.04.2016, 18:49
Помогаю со студенческими работами здесь

Массив типа ArrayList переполняет память
Добрый день всем! Скажите пожалуйста, где размещается созданный массив данных типа ArrayList? В памяти ОЗУ или в виртуальной памяти...

Вызов возвратит количество объектов х типа ArrayList
A) x.Size B) x.Length C) х. length D) х. Count

Создать переменную типа System.Collections.ArrayList
мне нужно создать переменную типа System.Collections.ArrayList объектов типа отдельного класса как это прописать? например есть...

Вызов удаляет все элементы из объекта х типа ArrayList
A) x.Remove() B) x.Delete() C) x.Empty() D) х.С1еаг()

Сериализация. XmlSerializer. Не сериализуются поля, значения которых пустое. т.е. null
Приведу пример класса. Он будет являться шаблонным т.к. на деле он выглядит намного больше. и это будет неэстетично запостить его сюда)). ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru