Учебники

24) C # Сериализация и десериализация

Концепция сериализации и десериализации используется всякий раз, когда данные, относящиеся к объектам, должны отправляться из одного приложения в другое. Сериализация используется для экспорта данных приложения в файл. Затем целевое приложение использует десериализацию для извлечения данных из приложения для дальнейшего использования.

Сериализация — это концепция, в которой объекты класса C # записываются или сериализуются в файлы. Допустим, у вас есть класс C # под названием Tutorial. И у класса есть 2 свойства идентификатора и имени учебника.

Сериализация может использоваться для прямой записи свойств данных класса Tutorial в файл. Десериализация используется для чтения данных из файла и повторного создания объекта Tutorial.

Давайте посмотрим на пример того, как мы можем достичь этого.

В нашем примере мы собираемся выполнить следующие шаги высокого уровня в коде

  1. Создайте класс с именем Tutorial, который имеет 2 свойства, а именно ID и имя
  2. Затем мы создадим объект из класса и присвоим значение «1» свойству ID, а значение «.Net» — свойству name.
  3. Затем мы будем использовать сериализацию для сериализации вышеуказанного объекта в файл с именем Example.txt
  4. Наконец, мы будем использовать десериализацию для десериализации объекта из файла и отображения значений в консоли.

Введите приведенный ниже код в файл program.cs консольного приложения.

Шаг 1) Первый шаг — добавить класс, который будет использоваться для сериализации.

Операции с файлами C #

Объяснение кода: —

  1. Класс, который необходимо сериализовать, должен иметь атрибут [Serializable]. Это ключевое слово в C #. Это ключевое слово затем присоединяется к классу Tutorial. Если вы не упомянете этот атрибут, вы получите сообщение об ошибке при попытке сериализации класса.
  2. Далее идет определение класса, который будет сериализован. Здесь мы определяем класс «Tutorial» и предоставляем 2 свойства, одно из которых «ID», а другое «Name».

Шаг 2) На этом шаге сначала мы создадим объект класса Tutorial и сериализуем его в файл с именем Example.txt.

Операции с файлами C #

Объяснение кода: —

  1. Сначала мы создаем объект класса Tutorial. Затем мы присваиваем значение «1» идентификатору, а «.net» свойству имени.
  2. Затем мы используем класс форматера, который используется для сериализации или преобразования объекта в двоичный формат. Данные в файле при сериализации выполняются в двоичном формате. Далее мы создаем объект файлового потока. Объект файлового потока используется для открытия файла Example.txt для записи. Ключевые слова FileMode.Create и FileMode.Write используются, чтобы особо упомянуть, что файл должен быть открыт для целей записи.
  3. Наконец, мы используем метод Serialize для передачи двоичных данных в файл. Затем мы закрываем поток, так как операция записи завершена.

Шаг 3) Наконец, чтобы убедиться, что данные присутствуют в файле, мы используем десериализацию для десериализации объекта из файла.

Операции с файлами C #

using System;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  [Serializable]
  class Tutorial
  {
  public int ID;
  public String Name;
   static void Main(string[] args)
   {
    Tutorial obj = new Tutorial();
    obj.ID = 1;
    obj.Name = ".Net";

    IFormatter formatter = new BinaryFormatter();
    Stream stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Create,FileAccess.Write);

    formatter.Serialize(stream, obj);
    stream.Close();

    stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Open,FileAccess.Read);
    Tutorial objnew = (Tutorial)formatter.Deserialize(stream);

    Console.WriteLine(objnew.ID);
    Console.WriteLine(objnew.Name);

    Console.ReadKey();
  }
 }
}

Объяснение кода: —

  1. Мы создаем объект «поток», чтобы открыть файл Example.txt в режиме только для чтения.
  2. Затем мы используем класс formatter, который используется для десериализации объекта, который хранится в файле Example.txt. Возвращаемый объект устанавливается как объект objnew.
  3. Наконец, мы отображаем свойства объекта «objnew» на консоли, используя свойства «ID» и «name».

Когда приведенный выше код установлен и проект запущен с использованием Visual Studio, вы получите следующий вывод.

Вывод:-

Операции с файлами C #

Из приведенного выше вывода видно, что значения из файла были десериализованы правильно и отображены в консоли.

Резюме

Сериализация используется для записи объектов классов в файлы.

Десериализация используется для восстановления объектов из файла.