Концепция сериализации и десериализации используется всякий раз, когда данные, относящиеся к объектам, должны быть отправлены из одного приложения в другое. Сериализация используется для экспорта данных приложения в файл. Затем целевое приложение использует десериализацию для извлечения данных из приложения для дальнейшего использования.
Сериализация - это концепция, при которой объекты класса C # записываются или сериализуются в файлы. Допустим, у вас есть класс C # под названием Tutorial. И у класса есть 2 свойства: ID и имя Tutorials.
Сериализация может использоваться для прямой записи свойств данных класса Tutorial в файл. Десериализация используется для чтения данных из файла и повторного создания объекта Tutorial.
Давайте посмотрим на примере, как мы можем этого добиться.
В нашем примере мы собираемся выполнить следующие высокоуровневые шаги в коде.
- Создайте класс под названием Tutorial, который имеет 2 свойства, а именно ID и имя.
- Затем мы создадим объект из класса и присвоим значение «1» свойству ID и значение «.Net» свойству name.
- Затем мы будем использовать сериализацию для сериализации указанного выше объекта в файл с именем Example.txt.
- Наконец, мы воспользуемся десериализацией, чтобы десериализовать объект из файла и отобразить значения в консоли.
Введите приведенный ниже код в файл program.cs консольного приложения.
Шаг 1) Первый шаг - добавить класс, который будет использоваться для сериализации.
Пояснение к коду: -
- Класс, который необходимо сериализовать, должен иметь атрибут [Serializable]. Это ключевое слово в C #. Это ключевое слово затем присоединяется к классу Tutorial. Если вы не укажете этот атрибут, вы получите сообщение об ошибке при попытке сериализовать класс.
- Далее следует определение класса, который будет сериализован. Здесь мы определяем класс под названием «Учебник» и предоставляем 2 свойства: одно - «ID», а другое - «Имя».
Шаг 2) На этом шаге сначала мы создадим объект класса Tutorial и сериализуем его в файл с именем Example.txt.
Пояснение к коду: -
- Сначала мы создаем объект класса Tutorial. Затем мы присваиваем значение «1» идентификатору и «.net» свойству name.
- Затем мы используем класс форматирования, который используется для сериализации или преобразования объекта в двоичный формат. Данные в файле при сериализации выполняются в двоичном формате. Затем мы создаем объект файлового потока. Объект файлового потока используется для открытия файла Example.txt для записи. Ключевые слова FileMode.Create и FileMode.Write используются для особого упоминания о том, что файл должен быть открыт для записи.
- Наконец, мы используем метод 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();}}}
Пояснение к коду: -
- Создаем объект «поток», чтобы открыть файл Example.txt в режиме только для чтения.
- Затем мы используем класс форматирования, который используется для десериализации объекта, который хранится в файле Example.txt. Возвращаемый объект устанавливается на объект objnew.
- Наконец, мы отображаем свойства объекта «objnew» в консоли, используя свойства «ID» и «name».
Когда приведенный выше код установлен и проект запускается с помощью Visual Studio, вы получите следующий результат.
Выход:-
Из вышеприведенного вывода видно, что значения из файла были десериализованы правильно и отображены в консоли.
Резюме
Сериализация используется для записи объектов классов в файлы.
Де-сериализация используется для восстановления объектов из файла.