Поняття серіалізації та десериалізації використовується, коли дані, що відносяться до об'єктів, повинні надсилатися з однієї програми в іншу. Серіалізація використовується для експорту даних програми у файл. Потім цільова програма використовує десериалізацію для вилучення даних із програми для подальшого використання.
Серіалізація - це концепція, при якій об’єкти класу C # записуються або серіалізуються у файли. Скажімо, у вас був клас C # під назвою Tutorial. А клас має 2 властивості ідентифікатора та імені підручників.
Серіалізацію можна використовувати для безпосереднього запису властивостей даних класу Підручник у файл. Десеріалізація використовується для зчитування даних із файлу та побудови об'єкта "Підручник" знову.
Давайте розглянемо приклад того, як ми можемо цього досягти.
У нашому прикладі ми збираємося виконати наведені нижче кроки високого рівня в коді
- Створіть клас під назвою Підручник, який має 2 властивості, а саме ID та Name
- Потім ми створимо об’єкт із класу і присвоїмо значення «1» властивості ID та значення «.Net» властивості name.
- Потім ми використовуватимемо серіалізацію для серіалізації вищевказаного об’єкта у файл, який називається Example.txt
- Нарешті, ми будемо використовувати десериалізацію для десеріалізації об’єкта з файлу та відображення значень у консолі.
Введіть код нижче у файлі program.cs консольної програми.
Крок 1) Першим кроком є додавання класу, який буде використовуватися для серіалізації
Пояснення коду: -
- Клас, який потрібно серіалізувати, повинен мати атрибут [Серіалізувати]. Це ключове слово в C #. Потім це ключове слово приєднується до класу "Підручник". Якщо ви не згадаєте цей атрибут, ви отримаєте повідомлення про помилку при спробі серіалізувати клас.
- Далі йде визначення класу, який буде серіалізовано. Тут ми визначаємо клас під назвою "Підручник" і надаємо 2 властивості, одне - "ID", а друге - "Ім'я".
Крок 2) На цьому кроці спочатку ми створимо об’єкт класу «Підручник» і серіалізуємо його до файлу, який називається Example.txt
Пояснення коду: -
- Спочатку ми створюємо об’єкт класу Tutorial. Потім ми присвоюємо значення "1" ID та ".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, ви отримаєте наведені нижче результати.
Вихід: -
З наведеного вище виводу видно, що значення з файлу були десеріалізовані належним чином і відображались у консолі.
Резюме
Серіалізація використовується для запису об’єктів класу у файли.
Десеріалізація використовується для відновлення об’єктів із файлу.