C # Σειριοποίηση & Αποεστεροποίηση με Παράδειγμα

Anonim

Η έννοια της Σειριατοποίησης και της αποεστερίωσης χρησιμοποιείται όποτε δεδομένα που αφορούν αντικείμενα πρέπει να αποστέλλονται από τη μία εφαρμογή στην άλλη. Η σειριοποίηση χρησιμοποιείται για την εξαγωγή δεδομένων εφαρμογής σε ένα αρχείο. Στη συνέχεια, η εφαρμογή προορισμού χρησιμοποιεί την αποεστεροποίηση για να εξαγάγει τα δεδομένα από την εφαρμογή για περαιτέρω χρήση.

Η σειριοποίηση είναι μια έννοια στην οποία αντικείμενα κατηγορίας C # γράφονται ή σειριοποιούνται σε αρχεία. Ας πούμε ότι είχατε μια τάξη C # που ονομάζεται Tutorial. Και η τάξη έχει 2 ιδιότητες αναγνωριστικού και ονόματος Tutorials.

Η σειριοποίηση μπορεί να χρησιμοποιηθεί για την άμεση εγγραφή των ιδιοτήτων δεδομένων της κλάσης Tutorial σε ένα αρχείο. Η αποεριοποίηση χρησιμοποιείται για την ανάγνωση των δεδομένων από το αρχείο και την κατασκευή του αντικειμένου εκμάθησης ξανά.

Ας δούμε ένα παράδειγμα για το πώς μπορούμε να το επιτύχουμε.

Στο παράδειγμά μας, θα ακολουθήσουμε τα παρακάτω βήματα υψηλού επιπέδου στον κώδικα

  1. Δημιουργήστε ένα μάθημα που ονομάζεται Tutorial το οποίο έχει 2 ιδιότητες, δηλαδή το ID και το όνομα
  2. Στη συνέχεια, θα δημιουργήσουμε ένα αντικείμενο από την κλάση και θα εκχωρήσουμε μια τιμή "1" στην ιδιότητα ID και μια τιμή ".Net" στην ιδιότητα name.
  3. Στη συνέχεια, θα χρησιμοποιήσουμε σειριοποίηση για να σειριοποιήσουμε το παραπάνω αντικείμενο σε ένα αρχείο που ονομάζεται Example.txt
  4. Τέλος, θα χρησιμοποιήσουμε την αποεστερίωση για την αποεπιεριοποίηση του αντικειμένου από το αρχείο και την εμφάνιση των τιμών στην Κονσόλα.

Εισαγάγετε τον παρακάτω κωδικό στο αρχείο program.cs της εφαρμογής κονσόλας.

Βήμα 1) Το πρώτο βήμα είναι να προσθέσετε την τάξη που θα χρησιμοποιηθεί για σειριοποίηση

Επεξήγηση κώδικα: -

  1. Η τάξη που πρέπει να σειριοποιηθεί πρέπει να έχει το χαρακτηριστικό [Serializable]. Αυτή είναι μια λέξη-κλειδί στο C #. Αυτή η λέξη-κλειδί στη συνέχεια επισυνάπτεται στην τάξη Tutorial. Εάν δεν αναφέρετε αυτό το χαρακτηριστικό, θα εμφανιστεί ένα σφάλμα κατά την προσπάθεια σειριοποίησης της τάξης.
  2. Στη συνέχεια είναι ο ορισμός της κλάσης που θα σειριοποιηθεί. Εδώ ορίζουμε μια τάξη που ονομάζεται "Tutorial" και παρέχουμε 2 ιδιότητες, η μία είναι "ID" και η άλλη είναι "Name".

Βήμα 2) Σε αυτό το βήμα, πρώτα θα δημιουργήσουμε το αντικείμενο της κλάσης Tutorial και θα το σειριοποιήσουμε στο αρχείο που ονομάζεται Example.txt

Επεξήγηση κώδικα: -

  1. Κατ 'αρχάς, δημιουργούμε ένα αντικείμενο της τάξης Tutorial. Στη συνέχεια αντιστοιχίζουμε την τιμή "1" στο αναγνωριστικό και το ".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 Το αντικείμενο που επιστρέφεται έχει οριστεί στο αντικείμενο.
  3. Τέλος, εμφανίζουμε τις ιδιότητες του αντικειμένου "objnew" στην κονσόλα χρησιμοποιώντας τις ιδιότητες "ID" και "name".

Όταν ο παραπάνω κώδικας έχει οριστεί και το έργο εκτελείται χρησιμοποιώντας το Visual Studio, θα λάβετε την παρακάτω έξοδο.

Παραγωγή:-

Μπορείτε να δείτε από την παραπάνω έξοδο ότι οι τιμές από το αρχείο αποστειρώθηκαν σωστά και εμφανίστηκαν στην κονσόλα.

Περίληψη

Η σειριοποίηση χρησιμοποιείται για την εγγραφή αντικειμένων κλάσης σε αρχεία.

Το De-Serialization χρησιμοποιείται για την ανάκτηση των αντικειμένων από το αρχείο.