Hy vọng đây là một sửa chữa dễ dàng mà tôi đã bỏ qua. Tôi có một đối tượng được truyền vào phương thức thụ lý sự kiện mà tôi muốn serialize đối tượng sử dụng JSON.NET, như vậy:JSON.NET Tuần tự hóa trên một đối tượng có thành viên thuộc loại Stream?
public void OnEvent(IEventObject foo)
{
// Serialize foo to string/disk here?
var data = JsonConvert.SerializeObject(foo, Formatting.Indented);
}
Dường như một hoặc nhiều thành viên foo của những con suối. Tôi đã nhận ra rằng các luồng không thể tuần tự hóa được vì chúng là một sự trừu tượng hóa dữ liệu chứ không phải dữ liệu. Điều này thật ý nghĩa.
Tôi không biết làm thế nào để serialize đối tượng này anyway bởi một trong hai:
- a) Chuyển đổi các luồng lại thành dữ liệu và serializing rằng
- b) Bỏ qua những con suối và serialize các thành viên còn lại
Một lưu ý lớn cho điều này là tôi không có quyền truy cập vào IEventObject hoặc việc triển khai IEventObject của nó, vì vậy tôi không thể đánh dấu bất kỳ đối tượng nào có cờ thuộc tính.
Giải pháp duy nhất tôi đã đưa ra là để bọc đối tượng này trong lớp của riêng tôi, đánh dấu nó một cách thích hợp và sắp xếp thứ tự đó. Sau đó tôi sẽ deserialize trở lại vào lớp học của riêng tôi, và chuyển đổi nó thành đối tượng ban đầu. Tôi không thích cách tiếp cận này vì nó liên quan đến một đối tượng phụ và bước chuyển đổi, và muốn tránh nó nếu có thể.
Tôi phải đối mặt với cùng một vấn đề và không có sự lựa chọn nào khác ngoài việc bọc nó trong một đối tượng của tôi hoàn toàn có thể tuần tự hóa được. nếu có một lựa chọn khác, tôi sẽ rất vui khi nghe nó :-) –
@Bartdude bạn có thể xem câu trả lời của tôi. –
@TimS. Thật không may trong trường hợp của tôi, tôi đã kết thúc việc phải thực hiện các đối tượng wrapper vì tôi không có quyền truy cập cục bộ vào các kiểu cụ thể để deserialize trở lại. Nếu không, câu trả lời được chấp nhận là một giải pháp tuyệt vời cho vấn đề này. – jmsb