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