Ц # Серијализација & амп; Десеријализација са примером

Anonim

Концепт сериализације и десериализације користи се кад год се подаци који се односе на објекте морају слати из једне апликације у другу. Серијализација се користи за извоз података апликације у датотеку. Одредишна апликација затим користи десериализацију за издвајање података из апликације за даљу употребу.

Серијализација је концепт у којем се објекти класе Ц # записују или сериализују у датотеке. Рецимо да сте имали Ц # класу која се зове Туториал. А класа има 2 својства ИД и име Туториалс.

Серијализовање се може користити за директно уписивање својстава података класе Водич у датотеку. Десеријализација се користи за читање података из датотеке и поновно конструисање објекта Туториал.

Погледајмо пример како то можемо постићи.

У нашем примеру ћемо извршити доленаведене кораке на високом нивоу у коду

  1. Направите класу под називом Туториал која има 2 својства, наиме ИД и Наме
  2. Затим ћемо створити објекат из класе и својству ИД доделити вредност „1“, а својству имена вредност „.Нет“.
  3. Затим ћемо сериализацијом користити за сериализацију горњег објекта у датотеку која се зове Екампле.ткт
  4. Коначно, користићемо десериализацију за десериализацију објекта из датотеке и приказивање вредности у конзоли.

Унесите доњи код у датотеку програм.цс апликације конзоле.

Корак 1) Први корак је додавање класе која ће се користити за сериализацију

Објашњење кода: -

  1. Класа која треба да се серилизује мора да има атрибут [Сериализабле]. Ово је кључна реч у Ц #. Ова кључна реч је затим прикључена на класу Водич. Ако не споменете овај атрибут, добићете грешку када покушате да сериализујете класу.
  2. Следећа је дефиниција класе која ће бити сериализована. Овде дефинишемо класу која се зове „Водич“ и пружамо 2 својства, једно је „ИД“, а друго „Име“.

Корак 2) У овом кораку прво ћемо створити објект класе Туториал и сериализовати га у датотеку која се зове Екампле.ткт

Објашњење кода: -

  1. Прво креирамо објекат класе Туториал. Затим додељујемо вредност „1“ ИД-у, а „.нет“ својству имена.
  2. Затим користимо класу обликовача која се користи за сериализацију или претварање објекта у бинарни формат. Подаци у датотеци у сериализацији се раде у бинарном формату. Даље креирамо објекат тока датотека. Објекат тока датотека користи се за отварање датотеке Екампле.ткт у сврхе писања. Кључне речи ФилеМоде.Цреате и ФилеМоде.Врите користе се да се посебно напомене да датотеку треба отворити ради писања.
  3. На крају, користимо методу Сериализе за пренос бинарних података у датотеку. Затим затворимо ток, пошто је операција писања завршена.

Корак 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. Креирамо објекат „стреам“ да бисмо отворили датотеку Екампле.ткт у режиму само за читање.
  2. Затим користимо класу форматирања која се користи за десериализацију објекта који је ускладиштен у датотеци Екампле.ткт. Враћени објекат је постављен на објнев.
  3. На крају, приказујемо својства објекта „објнев“ на конзоли користећи својства „ИД“ и „наме“.

Када се постави горњи код и пројекат покрене помоћу Висуал Студија, добићете доњи излаз.

Излаз: -

Из горњег резултата можете видети да су вредности из датотеке десеријализоване правилно и приказане у конзоли.

Резиме

Серијализација се користи за писање објеката класе у датотеке.

Де-сериализација се користи за опоравак објеката из датотеке.