Penyahserialisasian dalam C#

王林
Lepaskan: 2024-09-03 15:25:14
asal
461 orang telah melayarinya

Artikel berikut menyediakan garis besar Deserialisasi dalam C#. Mari kita lihat dahulu proses bersiri. Serialisasi ialah proses menukar objek kepada bentuk supaya ia boleh ditulis dalam aliran dan disimpan dalam ingatan, pangkalan data atau fail. Tujuan utamanya adalah untuk menyimpan keadaan objek.

Kini, penyahserikatan ialah proses yang bertentangan dengan pensirilan. Ia adalah proses membaca atau menukar aliran bait kembali kepada objek supaya ia boleh dimuatkan ke dalam ingatan. Proses ini membolehkan kami membina semula objek apabila diperlukan.

Sintaks dengan Penjelasan:

Sintaks untuk penyahserikatan menggunakan BinaryFormatter adalah seperti berikut:

FileStream fileStream = new FileStream(filePath, FileMode.Open);
BinaryFormatter binaryFormatter = new BinaryFormatter();
ClassName objectName = (ClassName)binaryformatter.Deserialize(fileStream);
Salin selepas log masuk

Dalam sintaks di atas, pertama, kami mencipta objek FileStream (fileStream) dengan memberikan laluan fail (filePath) dari mana kami akan mendapatkan maklumat untuk membina semula objek. Selepas ini, kami mencipta objek BinaryFormatter. BinaryFormatter ialah kelas yang terdapat di bawah System.Runtime.Serialization.Formatters.Binary namespace dan digunakan untuk mensiri dan menyahsiri objek. Kemudian, kami menyahsiri objek menggunakan kaedah Deserialize() BinaryFormatter, yang mengambil objek FileStream sebagai input dan mengembalikan objek yang kami tukar kepada objek jenis ClassName dan kemudian menyimpannya dalam objectName.

Bagaimanakah Penyahserialisasian Berfungsi dalam C#?

Untuk penyahserikatan dalam C#, kami perlu mengimport ruang nama System.IO dahulu dalam kod kami untuk membuka fail yang mengandungi data yang akan digunakan untuk membina semula objek. Kemudian kita perlu mengimport System.Runtime.Serialization.Formatters.Binary namespace untuk bekerja dengan kelas BinaryFormatter yang akan bertanggungjawab untuk mensiri dan menyahsiri objek.

Katakan kita mempunyai kelas yang dipanggil 'Pelajar' dengan dua sifat iaitu, 'Nama' dan 'RollNo'. Kami akan menulis sifat data kelas 'Pelajar' ke fail menggunakan proses bersiri. Kemudian dengan memanggil kaedah Deserialize() kelas BinaryFormatter, kita boleh membaca data daripada fail itu dan membina semula objek kelas 'Pelajar', yang kita panggil penyahserialisasian objek.

Langkah-langkah yang diikuti untuk menyahsiri objek dalam C# menggunakan BinaryFormatter adalah seperti berikut:

  • Pertama, kita mesti mencipta objek strim untuk membaca maklumat atau data bersiri.
  • Kemudian, kami akan mencipta objek kelas BinaryFormatter.
  • Selepas itu, kami akan memanggil kaedah Deserialize() kelas BinaryFormatter untuk menyahsiri objek. Kaedah ini akan mengembalikan objek yang boleh kita hantar kepada jenis yang sesuai.

Dalam C#, terdapat tiga jenis siri:

  • Siri binari
  • Siri XML
  • Siri JSON

Oleh itu, mengikut siri yang dilakukan, kita boleh menyahsiri objek dalam tiga cara. Untuk siri binari dan penyahserikatan, kami menggunakan kelas BinaryFormatter seperti yang dibincangkan di atas; untuk penyiaran dan penyahserikatan XML, kami menggunakan kelas XMLSerializer; dan untuk pensirilan dan penyahserilangan JSON, kami menggunakan kelas JsonSerializer.

Perwakilan bergambar bagi penyiaran dan penyahserikatan dalam C#:

 

Penyahserialisasian dalam C#

Contoh Deserialisasi dalam C#

Diberikan di bawah adalah contoh:

Contoh #1

Contoh menunjukkan siri binari dan penyahsirilan.

Kod:

using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace ConsoleApp4
{
class Program
{
public static void SerializingData()
{
string str = "Hello world!";
FileStream fileStream = new FileStream(@"E:\Content\content.txt",
FileMode.Create);
BinaryFormatter binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(fileStream, str);
fileStream.Close();
}
public static void DeserializingData()
{
FileStream fileStream = new FileStream(@"E:\Content\content.txt",
FileMode.Open);
BinaryFormatter binaryFormatter = new BinaryFormatter();
string content = "";
content = (string)binaryFormatter.Deserialize(fileStream);
fileStream.Close();
Console.WriteLine("Deserialized data: ");
Console.WriteLine(content);
}
static void Main(string[] args)
{
SerializingData();
DeserializingData();
Console.ReadLine();
}
}
}<strong> </strong>
Salin selepas log masuk

Output:

Penyahserialisasian dalam C#

Contoh #2

Contoh menunjukkan pensirilan binari dan penyahserikatan kelas tersuai.

Kod:

using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace ConsoleApp4
{
[Serializable]
public class Student
{
public int RollNo;
public string Name;
public string Address;
public Student(int rollNo, string name, string address)
{
RollNo = rollNo;
Name = name;
Address = address;
}
}
public class Program
{
public static void SerializingData()
{
Student student = new Student(1, "Sneha", "Kasarwadi, Pune");
//creating file to store data
FileStream fileStream = new FileStream(@"E:\Content\Student.txt",
FileMode.Create);
BinaryFormatter binaryFormatter = new BinaryFormatter();
//serializing data using Serialize() method
binaryFormatter.Serialize(fileStream, student);
fileStream.Close();
}
public static void DeserializingData()
{
Student student;
//opening file to read data
FileStream fileStream = new FileStream(@"E:\Content\Student.txt",
FileMode.Open);
BinaryFormatter binaryFormatter = new BinaryFormatter();
//creating object to store deserialized data
student = (Student)binaryFormatter.Deserialize(fileStream);
int rollNo = student.RollNo;
string name = student.Name;
string address = student.Address;
fileStream.Close();
//displaying deserialized data
Console.WriteLine("Deserialized data: ");
Console.WriteLine("Roll No = " + rollNo);
Console.WriteLine("Student Name = " + name);
Console.WriteLine("Student Address = " + address);
}
public static void Main(string[] args)
{
SerializingData();
DeserializingData();
Console.ReadLine();
}
}
}
Salin selepas log masuk

Output:

Penyahserialisasian dalam C#

Contoh #3

Contoh menunjukkan pensirilan XML dan penyahsirilan kelas tersuai.

Kod:

using System;
using System.IO;
using System.Xml.Serialization;
namespace ConsoleApp4
{
[Serializable]
public class Student
{
public int RollNo { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public Student()
{
RollNo = 0;
Name = "N/A";
Address = "N/A";
}
}
public class Program
{
public static void SerializingData(Student student)
{
//creating file to store data.
FileStream fileStream = new FileStream(@"E:\Content\Student.txt",
FileMode.Create);
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Student));
//calling serialize() method to serialize data to file
xmlSerializer.Serialize(fileStream, student);
fileStream.Close();
}
public static void DeserializingData()
{
//opening file to read data
FileStream fileStream = new FileStream(@"E:\Content\Student.txt",
FileMode.Open);
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Student))
//calling Deserialize() to deserialize data from the file
Student student = (Student)xmlSerializer.Deserialize(fileStream);
fileStream.Close();
Console.WriteLine("Deserialized data: ");
Console.WriteLine("Student Roll No = " + student.RollNo);
Console.WriteLine("Student Name = " + student.Name);
Console.WriteLine("Student Address = " + student.Address);
}
public static void Main(string[] args)
{
Student student = new Student();
Console.WriteLine("Enter student Roll No");
student.RollNo = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Enter student name");
student.Name = Console.ReadLine();
Console.WriteLine("Enter student address");
student.Address = Console.ReadLine();
SerializingData(student);
DeserializingData();
Console.ReadLine();
}
}
}
Salin selepas log masuk

Output:

Penyahserialisasian dalam C#

Kesimpulan

Deserialisasi ialah proses membina semula objek daripada jujukan bait bersiri sebelum ini. Ia membolehkan kami memulihkan objek apabila ia diperlukan. Ia adalah proses bersiri terbalik. Kaedah deserialize() kelas BinaryFormatter digunakan untuk penyahserikatan daripada aliran binari.

Atas ialah kandungan terperinci Penyahserialisasian dalam C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!