Serialisointi ja deserialisointi C#:ssa esimerkin avulla
Serialisointi ja deserialisointi C#:ssa
Serialisoinnin ja deserialisoinnin käsitettä käytetään aina, kun objekteihin liittyvää dataa on lähetettävä sovelluksesta toiseen. Serialisointia käytetään sovellustietojen viemiseen tiedostoon. Kohdesovellus käyttää sitten sarjoitusta tietojen poimimiseen sovelluksesta myöhempää käyttöä varten.
Serialisointi on käsite, jossa C#-luokan objektit kirjoitetaan tai sarjoidaan tiedostoiksi. Oletetaan, että sinulla oli C#-luokka nimeltä Tutorial. Ja luokassa on 2 ominaisuutta ID ja Tutorials nimi.
Sarjaamalla voidaan kirjoittaa suoraan Tutorial-luokan dataominaisuudet tiedostoon. Deserialisointia käytetään tietojen lukemiseen tiedostosta ja Tutorial-objektin uudelleen rakentamiseen.
Objektin sarjoittaminen C#:ssa
Katsotaanpa esimerkkiä siitä, kuinka voimme saavuttaa tämän.
Esimerkissämme aiomme suorittaa alla olevat korkean tason vaiheet koodissa
- Luo luokka nimeltä Tutorial, jossa on 2 ominaisuutta, nimittäin ID ja nimi
- Luomme sitten luokasta objektin ja annamme arvon "1" ID-ominaisuuteen ja ".Net"-arvon nimiominaisuuteen.
- Käytämme sitten serialisointia sarjoittamaan yllä olevan objektin tiedostoon nimeltä Esimerkki.txt
- Lopuksi käytämme deserialisointia deserialoimaan objektin tiedostosta ja näyttämään arvot konsolissa.
Kirjoita alla oleva koodi konsolisovelluksen program.cs-tiedostoon.
Vaihe 1) Lisää luokka.
Ensimmäinen vaihe on lisätä luokka, jota käytetään sarjoitukseen
Koodin selitys: -
- Sarjatettavalla luokalla on oltava [Serializable]-attribuutti. Tämä on avainsana C#:ssa. Tämä avainsana liitetään sitten Tutorial-luokkaan. Jos et mainitse tätä attribuuttia, saat virheilmoituksen, kun yrität sarjoittaa luokkaa.
- Seuraavaksi määritellään luokka, joka sarjoitetaan. Tässä määrittelemme luokan nimeltä "Tutorial" ja tarjoamme 2 ominaisuutta, joista toinen on "ID" ja toinen "Nimi".
Vaihe 2) Luo objekti.
Tässä vaiheessa luomme ensin Tutorial-luokan objektin ja sarjoimme sen tiedostoon nimeltä Esimerkki.txt
Koodin selitys: -
- Ensin luodaan Tutorial-luokan objekti. Määritämme sitten arvon "1" ID:lle ja ".net" nimen ominaisuudelle.
- Käytämme sitten muotoilijaluokkaa, jota käytetään sarjoittamaan tai muuttamaan objekti binäärimuotoon. Serialisoitavan tiedoston tiedot tehdään binäärimuodossa. Seuraavaksi luomme tiedostovirtaobjektin. Tiedostovirtaobjektia käytetään tiedoston Esimerkki.txt avaamiseen kirjoitustarkoituksiin. Avainsanoja FileMode.Create ja FileMode.Write käytetään erityisesti mainitsemaan, että tiedosto tulee avata kirjoittamista varten.
- Lopuksi käytämme Serialize-menetelmää binääritietojen siirtämiseen tiedostoon. Suljemme sitten virran kirjoittamisen jälkeen toiminta on valmis.
Vaihe 3) Käytä deserialisointia.
Lopuksi varmistaaksemme, että tiedot ovat tiedostossa, käytämme deserialisointia kohteen sarjoittamiseksi tiedostosta.
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(); } } }
Koodin selitys: -
- Luomme kohteen "virta" avataksesi tiedoston Esimerkki.txt vain luku -tilassa.
- Käytämme sitten muotoilijaluokkaa, jota käytetään deserialisoimaan objekti, joka on tallennettu Esimerkki.txt-tiedostoon. Palautettu objekti asetetaan objektiksi objnew.
- Lopuksi näytämme objektin "objnew" ominaisuudet konsolille käyttämällä "ID" ja "name" ominaisuuksia.
Kun yllä oleva koodi on asetettu ja projektia ajetaan käyttäen Visual Studio, saat alla olevan tulosteen.
Lähtö: -
Yllä olevasta lähdöstä näet, että tiedoston arvot sarjoitettiin oikein ja ne näytettiin konsolissa.
Yhteenveto
Serialisointia käytetään luokkaobjektien kirjoittamiseen tiedostoihin.
Serialisointia käytetään objektien palauttamiseen tiedostosta.