Концепцията за сериализация и десериализация се използва, когато данните, отнасящи се до обекти, трябва да се изпращат от едно приложение в друго. Сериализацията се използва за експортиране на данни от приложението във файл. След това целевото приложение използва десериализация, за да извлече данните от приложението за по-нататъшно използване.
Сериализацията е концепция, при която обектите от клас C # се записват или сериализират във файлове. Да предположим, че сте имали клас C #, наречен Урок. И класът има 2 свойства на ID и име на уроци.
Сериализирането може да се използва за директно записване на свойствата на данните от класа на урока във файл. Десериализацията се използва за четене на данните от файла и конструиране на обекта отново.
Нека разгледаме пример за това как можем да постигнем това.
В нашия пример ще изпълним долупосочените стъпки на високо ниво в кода
- Създайте клас, наречен Урок, който има 2 свойства, а именно ID и Name
- След това ще създадем обект от класа и ще присвоим стойност "1" на свойството ID и стойност ".Net" на свойството име.
- След това ще използваме сериализация, за да сериализираме горния обект във файл, наречен Example.txt
- И накрая, ще използваме десериализация, за да десериализираме обекта от файла и да покажем стойностите в конзолата.
Въведете кода по-долу във файла program.cs на конзолното приложение.
Стъпка 1) Първата стъпка е да добавите класа, който ще се използва за сериализация
Обяснение на кода: -
- Класът, който трябва да бъде сериализиран, трябва да има атрибут [Serializable]. Това е ключова дума в C #. След това тази ключова дума е прикрепена към класа на урока. Ако не споменете този атрибут, ще получите грешка, когато се опитате да сериализирате класа.
- Следва дефиницията на класа, който ще бъде сериализиран. Тук дефинираме клас, наречен "Урок" и предоставяме 2 свойства, единият е "ID", а другият е "Name".
Стъпка 2) В тази стъпка първо ще създадем обекта от класа на урока и ще го сериализираме във файла, наречен Example.txt
Обяснение на кода: -
- Първо, ние създаваме обект от класа Tutorial. След това присвояваме стойността на "1" на ID и ".net" на свойството на името.
- След това използваме класа за форматиране, който се използва за сериализиране или конвертиране на обекта в двоичен формат. Данните във файла при сериализация се извършват в двоичен формат. След това създаваме обект на файлов поток. Обектът на файловия поток се използва за отваряне на файла 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();}}}
Обяснение на кода: -
- Създаваме обект "stream", за да отворим файла Example.txt в режим само за четене.
- След това използваме класа за форматиране, който се използва за десериализиране на обекта, който се съхранява във файла Example.txt. Върнатият обект е зададен на обекта objnew.
- Накрая показваме свойствата на обекта "objnew" в конзолата, като използваме свойствата "ID" и "name".
Когато горният код е зададен и проектът се изпълни с помощта на Visual Studio, ще получите изхода по-долу.
Изход: -
От горния изход можете да видите, че стойностите от файла са десериализирани правилно и са показани в конзолата.
Обобщение
Сериализацията се използва за записване на обекти от клас във файлове.
Десериализацията се използва за възстановяване на обектите от файла.