Serializacja C # & Deserializacja z przykładem

Anonim

Koncepcja serializacji i deserializacji jest używana zawsze, gdy dane dotyczące obiektów muszą być wysyłane z jednej aplikacji do drugiej. Serializacja służy do eksportowania danych aplikacji do pliku. Aplikacja docelowa używa następnie deserializacji w celu wyodrębnienia danych z aplikacji do dalszego użycia.

Serializacja to koncepcja, w której obiekty klasy C # są zapisywane lub serializowane do plików. Powiedzmy, że masz klasę C # o nazwie Tutorial. Klasa ma 2 właściwości: ID i Nazwa tutoriala.

Serializacja może służyć do bezpośredniego zapisywania właściwości danych klasy Tutorial do pliku. Deserializacja służy do odczytywania danych z pliku i ponownego tworzenia obiektu Tutorial.

Spójrzmy na przykład, jak możemy to osiągnąć.

W naszym przykładzie zamierzamy wykonać poniższe kroki wysokiego poziomu w kodzie

  1. Utwórz klasę o nazwie Tutorial, która ma 2 właściwości, a mianowicie ID i Name
  2. Następnie utworzymy obiekt z klasy i przypiszemy wartość „1” do właściwości ID i wartość „.Net” do właściwości name.
  3. Następnie użyjemy serializacji do serializacji powyższego obiektu do pliku o nazwie Example.txt
  4. Na koniec użyjemy deserializacji do deserializacji obiektu z pliku i wyświetlimy wartości w Console.

Wprowadź poniższy kod w pliku program.cs aplikacji konsoli.

Krok 1) Pierwszym krokiem jest dodanie klasy, która będzie używana do serializacji

Objaśnienie kodu: -

  1. Klasa, która ma zostać serializowana, musi mieć atrybut [Serializable]. To jest słowo kluczowe w C #. To słowo kluczowe jest następnie dołączane do klasy Tutorial. Jeśli nie wymienisz tego atrybutu, podczas próby serializacji klasy wystąpi błąd.
  2. Dalej jest definicja klasy, która zostanie serializowana. Tutaj definiujemy klasę o nazwie „Tutorial” i udostępniamy 2 właściwości, jedną jest „ID”, a drugą „Name”.

Krok 2) W tym kroku najpierw utworzymy obiekt klasy Tutorial i zserializujemy go do pliku o nazwie Example.txt

Objaśnienie kodu: -

  1. Najpierw tworzymy obiekt klasy Tutorial. Następnie przypisujemy wartość „1” do ID, a „.net” do właściwości name.
  2. Następnie używamy klasy programu formatującego, która jest używana do serializacji lub konwersji obiektu do formatu binarnego. Dane w pliku w serializacji są wykonywane w formacie binarnym. Następnie tworzymy obiekt strumienia plików. Obiekt strumienia pliku służy do otwierania pliku Example.txt do celów pisania. Słowa kluczowe FileMode.Create i FileMode.Write służą konkretnie do wskazania, że ​​plik powinien zostać otwarty do celów pisania.
  3. Na koniec używamy metody Serialize, aby przesłać dane binarne do pliku. Następnie zamykamy strumień, ponieważ operacja zapisu została zakończona.

Krok 3) Wreszcie, aby upewnić się, że dane są obecne w pliku, używamy deserializacji do deserializacji obiektu z pliku.

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

Objaśnienie kodu: -

  1. Tworzymy obiekt „stream”, aby otworzyć plik Example.txt w trybie tylko do odczytu.
  2. Następnie używamy klasy programu formatującego, która jest używana do deserializacji obiektu, który jest przechowywany w pliku Example.txt. Zwrócony obiekt jest ustawiany na obiekt objnew.
  3. Na koniec wyświetlamy właściwości obiektu „objnew” w konsoli za pomocą właściwości „ID” i „name”.

Gdy powyższy kod jest ustawiony, a projekt jest uruchamiany przy użyciu programu Visual Studio, otrzymasz poniższe dane wyjściowe.

Wynik:-

Z powyższego wyniku widać, że wartości z pliku zostały poprawnie zdeserializowane i wyświetlone w konsoli.

Podsumowanie

Serializacja służy do zapisywania obiektów klas w plikach.

De-serialization służy do odzyskiwania obiektów z pliku.