Rumah  >  Artikel  >  pembangunan bahagian belakang  >  C# Serialisasi

C# Serialisasi

WBOY
WBOYasal
2024-09-03 15:30:13642semak imbas

Artikel berikut menyediakan garis besar tentang Pensirian C#. Proses di mana tika objek ditukar kepada aliran data dipanggil bersiri dan keadaan tika objek ditukar kepada aliran data kerana ia boleh diangkut merentasi rangkaian berbeza yang dibuat untuk dikekalkan di lokasi storan. Ini berfungsi sebagai kelebihan bersiri untuk menghantar strim data yang ditukar merentasi rangkaian berbeza dalam format yang serasi pada platform silang dan menyimpan data aliran yang ditukar ke dalam medium storan dalam keadaan objek yang berterusan atau tidak berterusan supaya salinan yang sama boleh dicipta pada masa kemudian.

Langkah-Langkah Objek Serialisasi C#

Diberikan di bawah adalah langkah-langkah C# Serialization Object:

  • Objek strim dicipta.
  • Objek BinaryFormatter dicipta.
  • Kaedah Serialize( ) dipanggil.

Menggunakan Pensirian C#

  • Setiap kali kami bekerja dengan aplikasi, adalah perlu untuk menyimpan data dalam medium yang sama ada berterusan atau tidak berterusan supaya data yang sama boleh diambil kemudian. Ini boleh dicapai dengan menggunakan konsep Serialisasi.
  • Proses menukar tika objek kepada strim bait yang menggerakkan keadaan objek ke dalam memori atau pangkalan data fail dipanggil Serialisasi.
  • Siri adalah penting untuk menghantar objek merentasi rangkaian untuk merentas platform dalam format yang serasi.
  • Klon objek juga boleh dibuat menggunakan Pensirian.
  • Rumasa. Ruang nama Pensirian mesti disertakan dalam program untuk menggunakan Pensirian dalam C#.
  • Atribut [ Serializable ] digunakan untuk menjadikan kelas Serializable dalam C#.

Kelas contoh untuk menunjukkan kelas [ Boleh Bersiri ]:

Kod:

[Serializable]
public class Check
{
public int code;
public string name;
}
  • Begitu juga, jika kita ingin menjadikan mana-mana ahli kelas tidak boleh bersiri, kita boleh menggunakan atribut [ NonSerialized() ].

Pertimbangkan kelas contoh di bawah untuk menunjukkan atribut [ NonSerialized() ]:

Kod:

[Serializable]
public class Check
{
public int code;
public string name;
[NonSerialized()]
Public double price;
}
  • Jenis siri berikut disokong oleh C#.

Diberikan di bawah adalah jenis siri yang disokong oleh C#:

1. Pensirian Binari

  • Teknik penyirian yang paling pantas ialah penyirian Binari.
  • Sesuatu objek boleh disirikan kepada aliran binari menggunakan Pensirian Binari.
  • Identiti objek dikekalkan manakala objek disiri ke aliran keluaran menggunakan pensirilan binari.
  • Sistem. Masa jalan. Serilaisasi. Pemformat. Ruang nama binari mesti disertakan dalam program untuk menggunakan pensirilan binari.

2. Pensirilan SOAP

  • Protokol Akses Objek Mudah ialah singkatan SOAP.
  • Kami menggunakan Pensirilan Protokol Akses Objek Mudah jika kami perlu memindahkan objek dari satu aplikasi ke aplikasi lain yang diperbuat daripada seni bina yang heterogen.
  • Kemudahalihan ialah faedah utama menggunakan Pensirilan Protokol Akses Objek Mudah.
  • Sesuatu objek boleh bersiri dalam bentuk Simple Object Access Protocol menggunakan Simple Object Access Protocol Serialization.
  • Sistem. Masa jalan. Serilaisasi. Pemformat. Ruang nama sabun mesti disertakan dalam program untuk menggunakan siri Protokol Akses Objek Mudah.

3. Pensirian XML

  • Ahli awam contoh kelas boleh disirikan ke dalam strim XML menggunakan Pensirian XML.
  • Kelajuan Pensiri XML adalah sangat perlahan jika dibandingkan dengan kelajuan Pensirian binari.
  • Sokongan merentas platform disediakan dengan menggunakan Pensirilan XML.
  • Sirialisasi XML adalah berdasarkan teks.
  • Sirialisasi XML mudah dibaca.
  • Sirialisasi XML boleh diedit dengan mudah.
  • Sesuatu sifat boleh ditetapkan pada XmlAttribute untuk mensiri sifat menggunakan Pensiri XML.

Pertimbangkan kod di bawah untuk menunjukkan penggunaan XmlAttribute:

Kod:

[XmlAttribute("Name")]
public string Name
{
get
{
return Name;
}
set
{
Name = val;
}
}
  • Kami menggunakan XmlSerializer untuk mensirikan objek menggunakan Pensiri XML.

Pertimbangkan kod di bawah untuk menunjukkan penggunaan XmlSerializer:

Kod:

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

4. Pensiri Tersuai

  • Untuk mengawal pensirilan dan penyahsirilan sesuatu jenis contoh, kami menggunakan Pensirian Tersuai.
  • Pensiri Tersuai boleh dilaksanakan dengan pelaksanaan antara muka ISerializable.
  • Kaedah GetObjectData() diisytiharkan oleh antara muka ISerializable.

Pertimbangkan kod di bawah untuk menunjukkan Serialisasi tersuai dengan melaksanakan antara muka ISerializable:

Kod:

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

Contoh

Diberikan di bawah adalah contoh Pensirian C#:

Program C# untuk menunjukkan konsep Pensirian.

Kod:

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# Serialisasi

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.

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

Kenyataan:
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
Artikel sebelumnya:Pemasa dalam C#Artikel seterusnya:Pemasa dalam C#