การ Serialize วัตถุใน C#

การทำ serialize ก็คือการทำให้วัตถุอยู่ในรูปแบบที่สามารถส่งต่อหรือจัดเก็บไว้
ใน C#.NET ก็ได้มี Class เอาไว้ใช้ในการจัดการอยู่แล้ว โดยจะมีอยู่สองตัวหลักๆคือ
การทำให้เป็น Binary กับการทำให้เป็น XML
สำหรับวันนี้ผมไม่ได้สนใจ XML เพราะว่าผลลัพธ์ที่ได้จะมีขนาดใหญ่มาก

การใช้งานนั้น ก่อนอื่นต้องเรียกใช้ namespaces ดังนี้

using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

สำหรับตัวอย่างการใช้งาน code จะมีดังนี้

Object obj = new Object(); //ตัว object ที่ต้องการ serialize
Stream stream = File.Open("output.bin", FileMode.Create);
BinaryFormatter bin = new BinaryFormatter();
bin.Serialize(stream, obj);

ถ้ายังไม่รู้ว่าจะเอาไปใช้งายอย่างไรดี ผมมี method สำเร็จรูปมาให้ใช้งานกันง่ายๆครับ

        //Static Method
        public static void Serialize(String fileName, Object obj)
        {
            BinaryFormatter binaryFormatter = new BinaryFormatter();
            FileStream fileStream = new FileStream(fileName, FileMode.Create);
            try
            {
                binaryFormatter.Serialize(fileStream, obj);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: The object could not be serialized - " + ex.Message + "\n" + ex.StackTrace);
            }
            finally
            {
                fileStream.Close();
            }
        }

ตัวอย่างของโปรแกรมที่ใช้งาน Object Serialization ที่ผมทำก็คือ BMS Game 1.7
โดยจะใช้กับ BMSReader object ทำให้ครั้งต่อไปที่เล่นเพลงนี้ สามารถดึงข้อมูลจากไฟล์ๆเดียวได้เลยและไม่ต้องประมวลผลข้อมูลไฟล์ BMS ซ้ำอีกรอบ
เนื่องจากใน BMSReader ได้มี Array ของ MemoryStream เอาไว้ด้วย ซึ่งภายใน Array นี้ก็จะเก็บข้อมูลของไฟล์เสียงและภาพเอาไว้หมด

Facebooktwittermailby feather
ข้อความนี้ถูกเขียนใน .NET, Programming คั่นหน้า ลิงก์ถาวร

ใส่ความเห็น