Vâng, một dàn diễn viên từ myObject
đến byte[]
sẽ không bao giờ hoạt động trừ khi bạn có một chuyển đổi rõ ràng hoặc nếu myObject
là một byte[]
. Bạn cần một số loại khung tuần tự hóa . Có rất nhiều thứ ở đó, bao gồm cả Bộ đệm giao thức ở gần và thân thiết với tôi. Nó khá "gọn gàng và có ý nghĩa" cả về không gian và thời gian.
Tuy nhiên, bạn sẽ thấy rằng hầu hết tất cả các khuôn khổ tuần tự hóa đều có những hạn chế đáng kể về những gì bạn có thể tuần tự hóa - Bộ đệm giao thức nhiều hơn một số, do là nền tảng chéo.
Nếu bạn có thể đưa ra nhiều yêu cầu hơn, chúng tôi có thể giúp bạn nhiều hơn - nhưng sẽ không bao giờ đơn giản như đúc ...
CHỈNH SỬA: Chỉ để trả lời điều này:
Tôi cần tệp nhị phân của mình để chứa các byte của đối tượng. Chỉ các byte, không có siêu dữ liệu nào. Đối tượng-đối tượng được đóng gói. Vì vậy, tôi sẽ thực hiện tuần tự hóa tùy chỉnh.
Xin lưu ý rằng các byte trong các đối tượng của bạn thường là các tham chiếu ... vì vậy bạn sẽ cần phải tìm ra những gì cần làm với chúng.
Tôi nghi ngờ rằng bạn sẽ thấy rằng việc thiết kế và triển khai khuôn khổ tuần tự hóa tùy chỉnh của riêng bạn khó hơn bạn tưởng tượng.
Cá nhân tôi khuyên rằng nếu bạn chỉ cần làm điều này cho một số loại cụ thể, bạn không cần cố gắng tìm ra một khuôn khổ tuần tự hóa chung. Chỉ cần triển khai một phương thức phiên bản và một phương thức tĩnh trong tất cả các kiểu bạn cần:
public void WriteTo(Stream stream)
public static WhateverType ReadFrom(Stream stream)
Một điều cần lưu ý: mọi thứ trở nên phức tạp hơn nếu bạn có liên quan đến tài sản thừa kế. Không cần kế thừa, nếu bạn biết loại bạn đang bắt đầu, bạn không cần bao gồm bất kỳ thông tin loại nào. Tất nhiên, cũng có vấn đề về lập phiên bản - bạn có cần lo lắng về khả năng tương thích ngược và chuyển tiếp với các phiên bản khác nhau của loại của bạn không?