C # Сериализация & Десериализация с примером

Anonim

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

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

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

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

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

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

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

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

Пояснение к коду: -

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

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

Пояснение к коду: -

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

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

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

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

Выход:-

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

Резюме

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

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