Главная страница
Навигация по странице:

  • JSON

  • TypeName

  • Лабораторная работа 4


    Скачать 0.73 Mb.
    НазваниеЛабораторная работа 4
    АнкорLab 03 v21.0412
    Дата20.05.2021
    Размер0.73 Mb.
    Формат файлаpdf
    Имя файлаLab 04 v21.0425.pdf
    ТипЛабораторная работа
    #207565
    Лабораторная работа №4
    СЕРИАЛИЗАЦИЯ И ДЕСЕРИАЛИЗАЦИЯ ДАННЫХ Цель работы Изучение механизмов сохранения и восстановления состояния объектов. Изучение особенностей сериализации и десериализации данных в разных форматах. Задание На основе проектов, входящих в состав лабораторной работы № 2 и 3, расширить функциональность программы, дополнив классы предметной области, средствами сериализации в файл и десериализации из файла. Необходимо обратить внимание, что для использования сериализации и десериализации в формате JSON необходимо наличие в системе .Net Framework не ниже версии 4.5 (входит в составили выше. Кроме этого, в рабочий проект необходимо самостоятельно добавить ссылку на сборку
    (assembly) с необходимыми классами (см. рисунок 4.1). Рисунок 4.1 – Подключение в проект сборки с необходимыми для
    JSON-сериализации классами Функциональность программы (в рамках данной лабораторной работы, таблица 4.2.) должна быть доступна пользователю через меню и/или панель инструментов приложения в виде следующего набора действий загрузки данных из файла с использованием стандартного диалога
    OpenFileDialog; сохранения в файле с текущим именем файла, которое определяется при загрузке данных или при первом сохранении
    сохранения (Save As) с предварительным запросом имении типа файла с помощью стандартного диалога SaveFileDialog. Порядок выполнения работы Реализация задач сериализации может быть разделена на две части – создание методов чтения/записи данных для заданных в работе форматов и использование классов-атрибутов для определения структуры сериализуемых данных (таблица 4.1). Таблица 4.1 Задача Формат сериализации
    JSON
    Binary
    XML Блокировка сериализации
    [IgnoreDataMember]
    [NonSerialized]
    [XmlIgnore] Управление полями структур
    [DataMember] public/private
    { get; set; }
    [XmlAttribute] Управление структурами
    [DataContract]
    [Serializable]
    [XmlType] [XmlText]
    [XmlEnum] Управление коллекциями
    [CollectionDataContract]
    [XmlRoot]
    [XmlElement] Привязка типа к сериализатору
    DataContractJsonSerializer( typeof(TypeName))
    BinaryFormatter()
    XmlSerializer( typeof(TypeName)) Запись
    WriteObject(file, obj)
    Serialize(file, obj) Serialize(file, obj) Чтение
    ReadObject(file)
    Deserialize(file)
    Deserialize(file) Операции чтение и записи достаточно схожи между собой и, например, для формата XML они могут выглядеть следующим образом void
    Save(
    string filename, <сериализуемый класс data)
    {
    XmlSerializer fmt = new
    XmlSerializer(
    typeof
    (<сериализуемый класс using
    (FileStream file = new
    FileStream(filename, FileMode.Create))
    { fmt.
    Serialize(file, data);
    }
    }
    <сериализуемый класс Load(
    string filename)
    {
    XmlSerializer fmt = new
    XmlSerializer(
    typeof
    (<сериализуемый класс using
    (FileStream file = new
    FileStream(filename, FileMode.Open))
    { return (<сериализуемый класс
    }
    }
    Таблица 4.2
    № Сложность Требования к работе Баллы Оценка
    1. Базовый уровень
    Сериализация и десериализация в формате
    JSON/Binary/XML (по баллу за каждый формат)
    1/1/1 2. Использования стандартных компонентов
    OpenFileDialog и SaveFileDialog
    1 3. Выбор формата сохранения данных в окне настроек. и на диске
    1 4. Повышенный уровень. Использование ISerializable или IXmlSerializable) в качестве наследуемого интерфейса в классах предметной области
    3 5. Варианты задания Задания выполняются в соответствии с вариантами лабораторной работы №2.


    написать администратору сайта