C# Serializavimas ir deserializavimas su pavyzdžiu

Serializavimo ir deserializavimo sąvoka naudojama, kai duomenys, susiję su objektais, turi būti siunčiami iš vienos programos į kitą. Serializavimas naudojamas programos duomenims eksportuoti į failą. Tada paskirties programa naudoja deserializaciją, kad iš programos išgautų duomenis tolesniam naudojimui.

Serializacija yra koncepcija, pagal kurią C# klasės objektai įrašomi arba serijuojami į failus. Tarkime, kad turėjote C# klasę pavadinimu „Tutorial“. Klasė turi dvi ID ir mokymo pavadinimo savybes.

Serializavimas gali būti naudojamas tiesiogiai įrašyti „Tutorial“ klasės duomenų savybes į failą. Deserializacija naudojama duomenims iš failo nuskaityti ir dar kartą sukurti mokomąjį objektą.

Pažvelkime į pavyzdį, kaip galime to pasiekti.

Mūsų pavyzdyje mes atliksime toliau nurodytus aukšto lygio kodo veiksmus

  1. Sukurkite klasę pavadinimu „Tutorial“, kuri turi 2 ypatybes, būtent ID ir vardą
  2. Tada iš klasės sukursime objektą ir ID ypatybei priskirsime reikšmę „1“, o pavadinimo ypatybei - „.Net“.
  3. Tada mes naudosime serializaciją, kad minėtą objektą suskirstytume į failą, pavadintą „Example.txt“
  4. Galiausiai mes naudosime deserializaciją, kad pašalintume objektą iš failo ir parodytume reikšmes konsolėje.

Įveskite žemiau esantį kodą konsolės programos program.cs faile.

1 žingsnis) Pirmasis žingsnis yra pridėti klasę, kuri bus naudojama serializavimui

Kodo paaiškinimas:-

  1. Klasė, kuri turi būti serijuojama, turi turėti atributą [Serializable]. Tai raktinis žodis C#. Tada šis raktinis žodis pridedamas prie mokymo grupės. Jei neminėsite šio atributo, bandydami suskirstyti klasę gausite klaidą.
  2. Kitas yra klasės, kuri bus serijinė, apibrėžimas. Čia mes apibrėžiame klasę pavadinimu „Mokomoji medžiaga“ ir pateikiame 2 ypatybes, viena yra „ID“, o kita - „Pavadinimas“.

2 žingsnis) Šiame žingsnyje pirmiausia sukursime „Tutorial“ klasės objektą ir suskirstysime jį į failą, pavadintą „Example.txt“

Kodo paaiškinimas:-

  1. Pirmiausia sukuriame Tutorial klasės objektą. Tada mes priskiriame „1“ reikšmę ID, o „.net“ - pavadinimo ypatybei.
  2. Tada naudojame formatavimo klasę, kuri naudojama objektui serijizuoti arba konvertuoti į dvejetainį formatą. Duomenys faile serijiniu būdu atliekami dvejetainiu formatu. Toliau sukuriame failų srauto objektą. Failo srauto objektas naudojamas failui Example.txt atidaryti rašymo tikslais. Raktažodžiai „FileMode.Create“ ir „FileMode.Write“ naudojami konkrečiai paminėti, kad failas turi būti atidarytas rašymo tikslais.
  3. Galiausiai dvejetainiams duomenims perkelti į failą naudojame metodą „Serialize“. Tada uždarome srautą, nes rašymo operacija baigta.

3 veiksmas) Galiausiai, norėdami užtikrinti, kad faile yra duomenų, mes naudojame deserializaciją, kad pašalintume objektą iš failo.

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(); } } }

Kodo paaiškinimas:-

  1. Sukuriame objektą „srautas“, kad atidarytume failą Example.txt tik skaitymo režimu.
  2. Tada mes naudojame formatavimo klasę, naudojamą deserializuoti objektą, kuris saugomas faile „Example.txt“. Grąžinamas objektas yra nustatytas į objektą objnew.
  3. Galiausiai mes parodome objekto „objnew“ savybes konsolėje naudodami „ID“ ir „name“ ypatybes.

Nustatę pirmiau nurodytą kodą ir vykdydami projektą naudodami „Visual Studio“, gausite žemiau pateiktą išvestį.

Išėjimas:-

Iš aukščiau pateiktos išvesties galite matyti, kad failo reikšmės buvo tinkamai deserizuotos ir rodomos konsolėje.

Santrauka

Serializacija naudojama įrašyti klasės objektus į failus.

Serializavimas naudojamas objektų atkūrimui iš failo.