Tôi đang viết một kết nối TCP nguyên mẫu và tôi gặp phải một số rắc rối khi đồng nhất dữ liệu được gửi đi.Chuyển đổi bất kỳ đối tượng nào thành một byte []
Hiện tại, tôi không gửi gì ngoài chuỗi, nhưng trong tương lai, chúng tôi muốn có thể gửi bất kỳ đối tượng nào.
Mã này là khá đơn giản vào lúc này, bởi vì tôi nghĩ rằng tất cả mọi thứ có thể được đúc thành một mảng byte:
void SendData(object headerObject, object bodyObject)
{
byte[] header = (byte[])headerObject; //strings at runtime,
byte[] body = (byte[])bodyObject; //invalid cast exception
// Unable to cast object of type 'System.String' to type 'System.Byte[]'.
...
}
Điều này tất nhiên là dễ dàng đủ giải quyết với một
if(state.headerObject is System.String){...}
Vấn đề là, nếu tôi làm theo cách đó, tôi cần phải kiểm tra MỌI loại đối tượng mà không thể được đúc thành một byte [] khi chạy.
Vì tôi không biết mọi đối tượng không thể chuyển thành byte [] khi chạy, đây thực sự không phải là một tùy chọn.
Làm thế nào để chuyển đổi bất kỳ đối tượng nào thành một mảng byte trong C# .NET 4.0?
Điều này là không thể theo bất kỳ cách nào có ý nghĩa nói chung (xem xét, ví dụ: một thể hiện của 'FileStream' hoặc bất kỳ đối tượng nào đóng gói một tay cầm như thế). – jason
Bạn có dự định có tất cả các máy khách đang chạy .NET không? Nếu câu trả lời là không, bạn nên xem xét một số dạng tuần tự hóa khác (XML, JSON hoặc các dạng tương tự) –