นักแสดงจากmyObjectถึงbyte[]จะไม่ทำงานเว้นแต่คุณจะได้รับการแปลงอย่างชัดเจนหรือถ้าmyObject เป็นไฟล์byte[]. คุณต้องมีกรอบการทำให้เป็นอนุกรมบางประเภท มีมากมายรวมทั้งProtocol Buffersที่อยู่ใกล้และเป็นที่รักของฉัน มันค่อนข้าง "เรียบและมีความหมาย" ทั้งในแง่ของพื้นที่และเวลา
คุณจะพบว่าเฟรมเวิร์กการทำให้เป็นอนุกรมเกือบทั้งหมดมีข้อ จำกัด ที่สำคัญเกี่ยวกับสิ่งที่คุณสามารถทำให้เป็นอนุกรมได้ - โปรโตคอลบัฟเฟอร์มากกว่าบางส่วนเนื่องจากเป็นข้ามแพลตฟอร์ม
หากคุณสามารถให้ข้อกำหนดเพิ่มเติมเราสามารถช่วยคุณได้มากขึ้น แต่มันจะไม่ง่ายเหมือนการคัดเลือกนักแสดง ...
แก้ไข: เพียงเพื่อตอบสนองต่อสิ่งนี้:
ฉันต้องการไฟล์ไบนารีของฉันเพื่อให้มีไบต์ของวัตถุ เฉพาะไบต์เท่านั้นไม่มีข้อมูลเมตาใด ๆ บรรจุวัตถุต่อวัตถุ ดังนั้นฉันจะใช้การทำให้เป็นอนุกรมแบบกำหนดเอง
โปรดจำไว้ว่าไบต์ในออบเจ็กต์ของคุณมักมีการอ้างอิงอยู่บ่อยครั้ง ... ดังนั้นคุณจะต้องพิจารณาว่าจะทำอย่างไรกับพวกมัน
ฉันสงสัยว่าคุณจะพบว่าการออกแบบและการใช้งานเฟรมเวิร์กการกำหนดลำดับข้อมูลที่กำหนดเองนั้นยากกว่าที่คุณคิด
ฉันอยากจะแนะนำเป็นการส่วนตัวว่าหากคุณต้องการทำสิ่งนี้เฉพาะบางประเภทคุณไม่ต้องกังวลกับการพยายามสร้างกรอบการทำให้เป็นอนุกรมทั่วไป เพียงใช้วิธีการอินสแตนซ์และวิธีการแบบคงที่ในทุกประเภทที่คุณต้องการ:
public void WriteTo(Stream stream)
public static WhateverType ReadFrom(Stream stream)
สิ่งหนึ่งที่ควรจำไว้: ทุกอย่างจะยุ่งยากมากขึ้นหากคุณมีมรดกที่เกี่ยวข้อง หากคุณรู้ว่าคุณเริ่มต้นด้วยประเภทใดคุณไม่จำเป็นต้องใส่ข้อมูลประเภทใด ๆ แน่นอนว่ายังมีเรื่องของการกำหนดเวอร์ชันด้วย - คุณต้องกังวลเกี่ยวกับความเข้ากันได้ย้อนหลังและไปข้างหน้ากับเวอร์ชันประเภทต่างๆของคุณหรือไม่?