Сериализация и десериализация в C# на примере

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

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

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

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

Как сериализовать объект в C#

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

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

  1. Создайте класс Tutorial, который имеет 2 свойства: ID и Name.
  2. Затем мы создадим объект из класса и присвоим значение «1» свойству ID и значение «.Net» свойству имени.
  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. Создаем объект «поток», чтобы открыть файл Пример.txt в режиме только для чтения.
  2. Затем мы используем класс форматтера, который используется для десериализации объекта, который хранится в файле example.txt. Возвращаемому объекту присваивается объект objnew.
  3. Наконец, мы отображаем свойства объекта «objnew» на консоли, используя свойства «ID» и «name».

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

Выход:-

Сериализация объекта в C#

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

Итоги

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

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