Heim  >  Artikel  >  Backend-Entwicklung  >  C#-Serialisierung

C#-Serialisierung

WBOY
WBOYOriginal
2024-09-03 15:30:13427Durchsuche

Der folgende Artikel bietet einen Überblick über die C#-Serialisierung. Der Prozess, durch den die Objektinstanz in einen Datenstrom umgewandelt wird, wird als Serialisierung bezeichnet. Der Status der Objektinstanz wird in einen Datenstrom umgewandelt, da er über verschiedene Netzwerke transportiert werden kann, die an einem Speicherort dauerhaft gespeichert werden können. Dies dient als Vorteil der Serialisierung, um den konvertierten Datenstrom über verschiedene Netzwerke in einem plattformübergreifenden Format zu übertragen und die konvertierten Stromdaten in einem Speichermedium in einem persistenten oder nicht persistenten Objektzustand zu speichern, sodass dieselbe Kopie erstellt werden kann in späterer Zeit erstellt.

Schritte des C#-Serialisierungsobjekts

Im Folgenden sind die Schritte des C#-Serialisierungsobjekts aufgeführt:

  • Ein Stream-Objekt wird erstellt.
  • Ein BinaryFormatter-Objekt wird erstellt.
  • Serialize( )-Methode wird aufgerufen.

Funktionsweise der C#-Serialisierung

  • Wenn wir mit Anwendungen arbeiten, ist es notwendig, die Daten auf einem Medium zu speichern, das entweder dauerhaft oder nicht dauerhaft ist, damit dieselben Daten später abgerufen werden können. Dies kann durch die Verwendung des Konzepts der Serialisierung erreicht werden.
  • Der Prozess der Konvertierung einer Instanz des Objekts in einen Bytestrom, der den Zustand des Objekts in den Speicher oder die Datenbank der Datei verschiebt, wird Serialisierung genannt.
  • Serialisierung ist wichtig, um das Objekt in einem kompatiblen Format über das Netzwerk an plattformübergreifende Plattformen zu übertragen.
  • Ein Klon eines Objekts kann auch mithilfe der Serialisierung erstellt werden.
  • Der Runtime.Serialization-Namespace muss im Programm enthalten sein, um die Serialisierung in C# nutzen zu können.
  • Das Attribut [Serialisierbar] wird verwendet, um eine Klasse in C# serialisierbar zu machen.

Eine Beispielklasse zur Demonstration der Klasse [Serialisierbar]:

Code:

[Serializable]
public class Check
{
public int code;
public string name;
}
  • Ähnlich können wir das Attribut [ NonSerialized() ] verwenden, wenn wir Mitglieder der Klasse nicht serialisierbar machen möchten.

Betrachten Sie die Beispielklasse unten, um das Attribut [ NonSerialized() ] zu demonstrieren:

Code:

[Serializable]
public class Check
{
public int code;
public string name;
[NonSerialized()]
Public double price;
}
  • Die folgenden Serialisierungstypen werden von C# unterstützt.

Im Folgenden sind die Serialisierungstypen aufgeführt, die von C# unterstützt werden:

1. Binäre Serialisierung

  • Die schnellste aller Serialisierungstechniken ist die binäre Serialisierung.
  • Ein Objekt kann mithilfe der binären Serialisierung in einen Binärstream serialisiert werden.
  • Die Identität des Objekts bleibt erhalten, während das Objekt mithilfe der binären Serialisierung in einen Ausgabestream serialisiert wird.
  • System. Laufzeit. Serilaisierung. Formatierer. Um die binäre Serialisierung nutzen zu können, muss ein binärer Namespace im Programm enthalten sein.

2. SOAP-Serialisierung

  • Simple Object Access Protocol ist die Abkürzung für SOAP.
  • Wir verwenden Simple Object Access Protocol Serialization, wenn wir Objekte von einer Anwendung zu einer anderen Anwendung übertragen müssen, die aus heterogenen Architekturen bestehen.
  • Portabilität ist der Hauptvorteil der Verwendung der Serialisierung des Simple Object Access Protocol.
  • Ein Objekt kann in Form von Simple Object Access Protocol mithilfe der Serialisierung des Simple Object Access Protocol serialisiert werden.
  • System. Laufzeit. Serilaisierung. Formatierer. Der Soap-Namespace muss im Programm enthalten sein, um die Simple Object Access Protocol-Serialisierung nutzen zu können.

3. XML-Serialisierung

  • Die öffentlichen Mitglieder der Instanz einer Klasse können mithilfe der XML-Serialisierung in einen XML-Stream serialisiert werden.
  • Die Geschwindigkeit der XML-Serialisierung ist im Vergleich zur Geschwindigkeit der binären Serialisierung sehr langsam.
  • Plattformübergreifende Unterstützung wird durch die Verwendung der XML-Serialisierung bereitgestellt.
  • XML-Serialisierung basiert auf Text.
  • XML-Serialisierung ist leicht lesbar.
  • XML-Serialisierung ist leicht editierbar.
  • Eine Eigenschaft kann für XmlAttribute festgelegt werden, um die Eigenschaft mithilfe der XML-Serialisierung zu serialisieren.

Betrachten Sie den folgenden Code, um die Verwendung von XmlAttribute zu demonstrieren:

Code:

[XmlAttribute("Name")]
public string Name
{
get
{
return Name;
}
set
{
Name = val;
}
}
  • Wir verwenden XmlSerializer, um ein Objekt mithilfe der XML-Serialisierung zu serialisieren.

Betrachten Sie den folgenden Code, um die Verwendung von XmlSerializer zu demonstrieren:

Code:

XmlSerializer Serializer = new XmlSerializer(typeof(Prod));
using (TextWriter Writer = new StreamWriter(@"C:\Prod.xml"))
{
xmlSerializer.Serialize(Writer, prodObject);
}

4. Benutzerdefinierte Serialisierung

  • Um die Serialisierung und Deserialisierung eines Instanztyps zu steuern, verwenden wir die benutzerdefinierte Serialisierung.
  • Benutzerdefinierte Serialisierung kann durch die Implementierung der ISerializable-Schnittstelle implementiert werden.
  • Die GetObjectData()-Methode wird von der ISerializable-Schnittstelle deklariert.

Betrachten Sie den folgenden Code, um die benutzerdefinierte Serialisierung durch Implementierung der ISerializable-Schnittstelle zu demonstrieren:

Code:

[Serializable]
public class Prod : ISerializable
{
public void GetObjectData(SerializationInfo information, StreamingContext cont)
{
//Usual code
}
}

Beispiel

Im Folgenden finden Sie ein Beispiel für die C#-Serialisierung:

C#-Programm zur Demonstration des Konzepts der Serialisierung.

Code:

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;
//a namespace called demo is created
namespace Demo
{
//Serializable attribute is declared
[Serializable]
//a class check is defined which will be used for serialization
class Check
{
public int identity;
public String nam;
static void Main(string[] args)
{
//an object of the check class is created to serialize it to the file Example.txt
Check ob = new Check();
ob.identity = 10;
ob.nam = "Shobha";
//a file stream is created
IFormatter format = new BinaryFormatter();
Stream stream1 = new FileStream(@"E:\Example.txt",FileMode.Create,FileAccess.Write);
//serialization of the object of the class check is done
format.Serialize(stream1, ob);
stream1.Close();
//a file stream is created
stream1 = new FileStream(@"E:\Example.txt",FileMode.Open,FileAccess.Read);
//the object of the class check is deserialized
Check ob1 = (Check)format.Deserialize(stream1);
//the data is written to the console
Console.WriteLine(ob1.identity);
Console.WriteLine(ob1.nam);
Console.ReadKey();
}
}
}

Output:

C#-Serialisierung

In the above program, a namespace called demo is defined. Then a Serializable attribute is defined. A class check is defined to demonstrate the concept of serialization using this class. Two properties identity and nam are defined in the class to which the values 10 and Shobha are assigned respectively. Then an object of the check class is created to serialize it to the file Example.txt. Then a formatter class is defined to convert the object of the class check to a binary stream.

Then a file stream object is created to open the file Example.txt in write mode to write the values of the properties identity and nam into it. Then serialize method is used to transfer the binary data into the text file. Finally, We use deserialize method to deserialize the contents of the text file Example.txt and the data is written to the console as shown in the output snapshot above.

Das obige ist der detaillierte Inhalt vonC#-Serialisierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Timer in C#Nächster Artikel:Timer in C#