การทำให้เป็นอนุกรมและดีซีเรียลไลซ์ใน C # พร้อมตัวอย่าง
การทำให้เป็นอนุกรมและดีซีเรียลไลซ์ใน C#
แนวคิดของการทำให้เป็นอนุกรมและดีซีเรียลไลเซชันจะใช้เมื่อใดก็ตามที่ต้องส่งข้อมูลที่เกี่ยวข้องกับออบเจ็กต์จากแอปพลิเคชันหนึ่งไปยังอีกแอปพลิเคชันหนึ่ง การทำให้เป็นอนุกรมใช้เพื่อส่งออกข้อมูลแอปพลิเคชันเป็นไฟล์ แอปพลิเคชันปลายทางจะใช้การดีซีเรียลไลซ์เพื่อดึงข้อมูลจากแอปพลิเคชันเพื่อใช้ต่อไป
การทำให้เป็นอนุกรมเป็นแนวคิดที่อ็อบเจ็กต์คลาส C# ถูกเขียนหรือทำให้เป็นอนุกรมไปยังไฟล์ สมมติว่าคุณมีคลาส C# ชื่อ Tutorial และคลาสมีคุณสมบัติ 2 อย่างคือ ID และชื่อ Tutorials
การทำให้เป็นอนุกรมสามารถใช้เพื่อเขียนคุณสมบัติข้อมูลของคลาส Tutorial ลงในไฟล์ได้โดยตรง ใช้เพื่ออ่านข้อมูลจากไฟล์และสร้างออบเจ็กต์บทช่วยสอนอีกครั้ง
วิธีการทำให้วัตถุเป็นอนุกรมใน C#
ลองดูตัวอย่างว่าเราจะบรรลุเป้าหมายนี้ได้อย่างไร
ในตัวอย่างของเรา เราจะดำเนินการตามขั้นตอนระดับสูงด้านล่างในโค้ด
- สร้างคลาสชื่อ Tutorial ซึ่งมี 2 คุณสมบัติ คือ ID และ Name
- จากนั้นเราจะสร้างวัตถุจากคลาสและกำหนดค่า "1" ให้กับคุณสมบัติ ID และค่า ".Net" ให้กับคุณสมบัติชื่อ
- จากนั้นเราจะใช้การทำให้เป็นอนุกรมเพื่อทำให้ออบเจ็กต์ด้านบนเป็นอนุกรมไปยังไฟล์ชื่อ Example.txt
- สุดท้าย เราจะใช้การดีซีเรียลไลซ์อ็อบเจ็กต์จากไฟล์และแสดงค่าในคอนโซล
ป้อนโค้ดด้านล่างในไฟล์ program.cs ของแอปพลิเคชันคอนโซล
ขั้นตอน 1) เพิ่มชั้นเรียน
ขั้นตอนแรกคือการเพิ่มคลาสที่จะใช้สำหรับการทำให้เป็นอนุกรม
คำอธิบายรหัส:-
- คลาสที่ต้องทำให้เป็นอนุกรมจำเป็นต้องมีแอตทริบิวต์ [Serializable] นี่คือคำหลักใน C# จากนั้นคีย์เวิร์ดนี้จะแนบไปกับคลาสการสอน หากคุณไม่พูดถึงคุณลักษณะนี้ คุณจะได้รับข้อผิดพลาดเมื่อคุณพยายามทำให้คลาสเป็นอนุกรม
- ถัดไปคือคำจำกัดความของคลาสที่จะถูกทำให้เป็นอนุกรม ที่นี่เรากำลังกำหนดคลาสที่เรียกว่า "บทช่วยสอน" และจัดเตรียมคุณสมบัติ 2 รายการ อันหนึ่งคือ "ID" และอีกอันคือ "ชื่อ"
ขั้นตอน 2) สร้างวัตถุ
ในขั้นตอนนี้ ขั้นแรกเราจะสร้างอ็อบเจ็กต์ของคลาส Tutorial และทำให้เป็นอนุกรมไปยังไฟล์ชื่อ Example.txt
คำอธิบายรหัส:-
- ขั้นแรก เราสร้างออบเจ็กต์ของคลาส Tutorial จากนั้นเราจะกำหนดค่า "1" ให้กับ ID และ ".net" ให้กับคุณสมบัติชื่อ
- จากนั้นเราใช้คลาสตัวจัดรูปแบบที่ใช้ในการทำให้เป็นอนุกรมหรือแปลงวัตถุเป็นรูปแบบไบนารี ข้อมูลในไฟล์ในการซีเรียลไลซ์จะทำในรูปแบบไบนารี ต่อไปเราจะสร้างออบเจ็กต์สตรีมไฟล์ ออบเจ็กต์สตรีมไฟล์ใช้เพื่อเปิดไฟล์ Example.txt เพื่อวัตถุประสงค์ในการเขียน คำสำคัญ FileMode.Create และ FileMode.Write ใช้เพื่อระบุโดยเฉพาะว่าควรเปิดไฟล์เพื่อการเขียน
- สุดท้ายเราใช้วิธี Serialize เพื่อถ่ายโอนข้อมูลไบนารี่ไปยังไฟล์ จากนั้นเราก็ปิดสตรีมตั้งแต่เขียน การดำเนินการ เสร็จสมบูรณ์
ขั้นตอน 3) ใช้การดีซีเรียลไลซ์
สุดท้ายเพื่อให้แน่ใจว่าข้อมูลมีอยู่ในไฟล์ เราจะใช้การดีซีเรียลไลซ์เพื่อดีซีเรียลไลซ์อ็อบเจ็กต์จากไฟล์
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(); } } }
คำอธิบายรหัส:-
- เราสร้างวัตถุ”กระแส” เพื่อเปิดไฟล์ Example.txt ในโหมดอ่านอย่างเดียว
- จากนั้นเราใช้คลาสฟอร์แมตเตอร์ที่ใช้ในการดีซีเรียลไลซ์อ็อบเจ็กต์ ซึ่งจัดเก็บไว้ในไฟล์ Example.txt วัตถุที่ส่งคืนถูกตั้งค่าเป็นวัตถุ objnew
- สุดท้ายนี้ เราจะแสดงคุณสมบัติของวัตถุ “objnew” ไปยังคอนโซลโดยใช้คุณสมบัติ “ID” และ “ชื่อ”
เมื่อตั้งค่าโค้ดข้างต้นแล้ว และโปรเจ็กต์ถูกรันโดยใช้ Visual Studioคุณจะได้ผลลัพธ์ด้านล่าง
ผลลัพธ์:-
คุณสามารถดูได้จากเอาต์พุตด้านบนว่าค่าจากไฟล์ได้รับการดีซีเรียลไลซ์อย่างถูกต้องและแสดงในคอนโซล
สรุป
การทำให้เป็นอนุกรมใช้เพื่อเขียนวัตถุคลาสลงในไฟล์
De-Serialization ใช้เพื่อกู้คืนอ็อบเจ็กต์จากไฟล์