Serialization και Deserialization σε C# με Παράδειγμα

Serialization & Deserialization σε C#

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

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

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

Πώς να σειριοποιήσετε ένα αντικείμενο στο C#

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

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

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


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

Βήμα 1) Προσθέστε την τάξη.

Το πρώτο βήμα είναι να προσθέσετε την κλάση που θα χρησιμοποιηθεί για σειριοποίηση

Σειριοποίηση αντικειμένου σε C#

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

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

Βήμα 2) Δημιουργήστε το αντικείμενο.

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

Σειριοποίηση αντικειμένου σε C#

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

  1. Αρχικά, δημιουργούμε ένα αντικείμενο της κλάσης Tutorial. Στη συνέχεια εκχωρούμε την τιμή "1" στο ID και ".net" στην ιδιότητα ονόματος.
  2. Στη συνέχεια χρησιμοποιούμε την κλάση μορφοποιητή που χρησιμοποιείται για τη σειριοποίηση ή τη μετατροπή του αντικειμένου σε δυαδική μορφή. Τα δεδομένα στο αρχείο σε σειριοποίηση γίνονται σε δυαδική μορφή. Στη συνέχεια, δημιουργούμε ένα αντικείμενο ροής αρχείου. Το αντικείμενο ροής αρχείου χρησιμοποιείται για το άνοιγμα του αρχείου Example.txt για σκοπούς γραφής. Οι λέξεις-κλειδιά FileMode.Create και FileMode.Write χρησιμοποιούνται για να αναφέρουν συγκεκριμένα ότι το αρχείο θα πρέπει να ανοίγει για λόγους γραφής.
  3. Τέλος, χρησιμοποιούμε τη μέθοδο Serialize για να μεταφέρουμε τα δυαδικά δεδομένα στο αρχείο. Στη συνέχεια κλείνουμε το stream, από τη στιγμή που γράφουμε λειτουργία ειναι ΟΛΟΚΛΗΡΩΜΕΝΟ.

Βήμα 3) Χρησιμοποιήστε την αφαίρεση.

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

Σειριοποίηση αντικειμένου σε C#

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. Δημιουργούμε το αντικείμενο "μετάδοση” για να ανοίξετε το αρχείο Example.txt σε λειτουργία μόνο για ανάγνωση.
  2. Στη συνέχεια χρησιμοποιούμε την κλάση μορφοποιητή που χρησιμοποιείται για την αποσειροποίηση του αντικειμένου, το οποίο είναι αποθηκευμένο στο αρχείο Example.txt. Το αντικείμενο που επιστρέφεται ορίζεται στο αντικείμενο objne.
  3. Τέλος, εμφανίζουμε τις ιδιότητες του αντικειμένου «objnew» στην κονσόλα χρησιμοποιώντας τις ιδιότητες «ID» και «name».

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

Παραγωγή:-

Σειριοποίηση αντικειμένου σε C#

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

Περίληψη

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

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