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

Anonim

Концепцията за сериализация и десериализация се използва, когато данните, отнасящи се до обекти, трябва да се изпращат от едно приложение в друго. Сериализацията се използва за експортиране на данни от приложението във файл. След това целевото приложение използва десериализация, за да извлече данните от приложението за по-нататъшно използване.

Сериализацията е концепция, при която обектите от клас C # се записват или сериализират във файлове. Да предположим, че сте имали клас C #, наречен Урок. И класът има 2 свойства на ID и име на уроци.

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

Нека разгледаме пример за това как можем да постигнем това.

В нашия пример ще изпълним долупосочените стъпки на високо ниво в кода

  1. Създайте клас, наречен Урок, който има 2 свойства, а именно ID и Name
  2. След това ще създадем обект от класа и ще присвоим стойност "1" на свойството ID и стойност ".Net" на свойството име.
  3. След това ще използваме сериализация, за да сериализираме горния обект във файл, наречен Example.txt
  4. И накрая, ще използваме десериализация, за да десериализираме обекта от файла и да покажем стойностите в конзолата.

Въведете кода по-долу във файла program.cs на конзолното приложение.

Стъпка 1) Първата стъпка е да добавите класа, който ще се използва за сериализация

Обяснение на кода: -

  1. Класът, който трябва да бъде сериализиран, трябва да има атрибут [Serializable]. Това е ключова дума в C #. След това тази ключова дума е прикрепена към класа на урока. Ако не споменете този атрибут, ще получите грешка, когато се опитате да сериализирате класа.
  2. Следва дефиницията на класа, който ще бъде сериализиран. Тук дефинираме клас, наречен "Урок" и предоставяме 2 свойства, единият е "ID", а другият е "Name".

Стъпка 2) В тази стъпка първо ще създадем обекта от класа на урока и ще го сериализираме във файла, наречен Example.txt

Обяснение на кода: -

  1. Първо, ние създаваме обект от класа Tutorial. След това присвояваме стойността на "1" на ID и ".net" на свойството на името.
  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. Създаваме обект "stream", за да отворим файла Example.txt в режим само за четене.
  2. След това използваме класа за форматиране, който се използва за десериализиране на обекта, който се съхранява във файла Example.txt. Върнатият обект е зададен на обекта objnew.
  3. Накрая показваме свойствата на обекта "objnew" в конзолата, като използваме свойствата "ID" и "name".

Когато горният код е зададен и проектът се изпълни с помощта на Visual Studio, ще получите изхода по-долу.

Изход: -

От горния изход можете да видите, че стойностите от файла са десериализирани правилно и са показани в конзолата.

Обобщение

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

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