การทำให้เป็นอนุกรมและดีซีเรียลไลซ์ใน C # พร้อมตัวอย่าง

การทำให้เป็นอนุกรมและดีซีเรียลไลซ์ใน C#

แนวคิดของการทำให้เป็นอนุกรมและดีซีเรียลไลเซชันจะใช้เมื่อใดก็ตามที่ต้องส่งข้อมูลที่เกี่ยวข้องกับออบเจ็กต์จากแอปพลิเคชันหนึ่งไปยังอีกแอปพลิเคชันหนึ่ง การทำให้เป็นอนุกรมใช้เพื่อส่งออกข้อมูลแอปพลิเคชันเป็นไฟล์ แอปพลิเคชันปลายทางจะใช้การดีซีเรียลไลซ์เพื่อดึงข้อมูลจากแอปพลิเคชันเพื่อใช้ต่อไป

การทำให้เป็นอนุกรมเป็นแนวคิดที่อ็อบเจ็กต์คลาส C# ถูกเขียนหรือทำให้เป็นอนุกรมไปยังไฟล์ สมมติว่าคุณมีคลาส C# ชื่อ Tutorial และคลาสมีคุณสมบัติ 2 อย่างคือ ID และชื่อ Tutorials

การทำให้เป็นอนุกรมสามารถใช้เพื่อเขียนคุณสมบัติข้อมูลของคลาส Tutorial ลงในไฟล์ได้โดยตรง ใช้เพื่ออ่านข้อมูลจากไฟล์และสร้างออบเจ็กต์บทช่วยสอนอีกครั้ง

วิธีการทำให้วัตถุเป็นอนุกรมใน C#

ลองดูตัวอย่างว่าเราจะบรรลุเป้าหมายนี้ได้อย่างไร

ในตัวอย่างของเรา เราจะดำเนินการตามขั้นตอนระดับสูงด้านล่างในโค้ด

  1. สร้างคลาสชื่อ Tutorial ซึ่งมี 2 คุณสมบัติ คือ ID และ Name
  2. จากนั้นเราจะสร้างวัตถุจากคลาสและกำหนดค่า "1" ให้กับคุณสมบัติ ID และค่า ".Net" ให้กับคุณสมบัติชื่อ
  3. จากนั้นเราจะใช้การทำให้เป็นอนุกรมเพื่อทำให้ออบเจ็กต์ด้านบนเป็นอนุกรมไปยังไฟล์ชื่อ Example.txt
  4. สุดท้าย เราจะใช้การดีซีเรียลไลซ์อ็อบเจ็กต์จากไฟล์และแสดงค่าในคอนโซล


ป้อนโค้ดด้านล่างในไฟล์ program.cs ของแอปพลิเคชันคอนโซล

ขั้นตอน 1) เพิ่มชั้นเรียน

ขั้นตอนแรกคือการเพิ่มคลาสที่จะใช้สำหรับการทำให้เป็นอนุกรม

ทำให้วัตถุเป็นอนุกรมใน C #

คำอธิบายรหัส:-

  1. คลาสที่ต้องทำให้เป็นอนุกรมจำเป็นต้องมีแอตทริบิวต์ [Serializable] นี่คือคำหลักใน C# จากนั้นคีย์เวิร์ดนี้จะแนบไปกับคลาสการสอน หากคุณไม่พูดถึงคุณลักษณะนี้ คุณจะได้รับข้อผิดพลาดเมื่อคุณพยายามทำให้คลาสเป็นอนุกรม
  2. ถัดไปคือคำจำกัดความของคลาสที่จะถูกทำให้เป็นอนุกรม ที่นี่เรากำลังกำหนดคลาสที่เรียกว่า "บทช่วยสอน" และจัดเตรียมคุณสมบัติ 2 รายการ อันหนึ่งคือ "ID" และอีกอันคือ "ชื่อ"

ขั้นตอน 2) สร้างวัตถุ

ในขั้นตอนนี้ ขั้นแรกเราจะสร้างอ็อบเจ็กต์ของคลาส Tutorial และทำให้เป็นอนุกรมไปยังไฟล์ชื่อ Example.txt

ทำให้วัตถุเป็นอนุกรมใน C #

คำอธิบายรหัส:-

  1. ขั้นแรก เราสร้างออบเจ็กต์ของคลาส Tutorial จากนั้นเราจะกำหนดค่า "1" ให้กับ ID และ ".net" ให้กับคุณสมบัติชื่อ
  2. จากนั้นเราใช้คลาสตัวจัดรูปแบบที่ใช้ในการทำให้เป็นอนุกรมหรือแปลงวัตถุเป็นรูปแบบไบนารี ข้อมูลในไฟล์ในการซีเรียลไลซ์จะทำในรูปแบบไบนารี ต่อไปเราจะสร้างออบเจ็กต์สตรีมไฟล์ ออบเจ็กต์สตรีมไฟล์ใช้เพื่อเปิดไฟล์ Example.txt เพื่อวัตถุประสงค์ในการเขียน คำสำคัญ FileMode.Create และ FileMode.Write ใช้เพื่อระบุโดยเฉพาะว่าควรเปิดไฟล์เพื่อการเขียน
  3. สุดท้ายเราใช้วิธี Serialize เพื่อถ่ายโอนข้อมูลไบนารี่ไปยังไฟล์ จากนั้นเราก็ปิดสตรีมตั้งแต่เขียน การดำเนินการ เสร็จสมบูรณ์

ขั้นตอน 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 วัตถุที่ส่งคืนถูกตั้งค่าเป็นวัตถุ objnew
  3. สุดท้ายนี้ เราจะแสดงคุณสมบัติของวัตถุ “objnew” ไปยังคอนโซลโดยใช้คุณสมบัติ “ID” และ “ชื่อ”

เมื่อตั้งค่าโค้ดข้างต้นแล้ว และโปรเจ็กต์ถูกรันโดยใช้ Visual Studioคุณจะได้ผลลัพธ์ด้านล่าง

ผลลัพธ์:-

ทำให้วัตถุเป็นอนุกรมใน C #

คุณสามารถดูได้จากเอาต์พุตด้านบนว่าค่าจากไฟล์ได้รับการดีซีเรียลไลซ์อย่างถูกต้องและแสดงในคอนโซล

สรุป

การทำให้เป็นอนุกรมใช้เพื่อเขียนวัตถุคลาสลงในไฟล์

De-Serialization ใช้เพื่อกู้คืนอ็อบเจ็กต์จากไฟล์