Cuốn sách CLR Via C#
trình bày một cách đơn giản để sao chép các đối tượng thông qua serialization nhị phân.StreamingContextStates.Clone thực sự làm gì?
Nó chỉ rõ StreamingContextStates.Clone
khi tạo BinaryFormatter
như vậy:
var formatter = new BinaryFormatter
{
Context = new StreamingContext(StreamingContextStates.Clone)
};
The documentation for StreamingContextStates.Clone
nói rằng nó
Chỉ định rằng đối tượng đồ thị đã được nhân bản. Người dùng có thể giả định rằng biểu đồ nhân bản sẽ tiếp tục tồn tại trong cùng một quy trình và an toàn để truy cập vào các xử lý hoặc các tham chiếu khác tới các tài nguyên không được quản lý.
Đủ công bằng - nhưng tôi thực sự không biết điều này thực sự có ý nghĩa gì. Theo cách nào, điều này thực sự thay đổi hành vi của BinaryFormatter
? Bất cứ ai có thể liệt kê bất kỳ hiệu ứng cụ thể mà sử dụng lá cờ này có?
Đối với hồ sơ, tôi ** ** mạnh mẽ đề nghị bạn nên tránh 'BinaryFormatter' trong, tốt, hầu hết các trường hợp này. Nó có một số thứ mà nó rất tiện dụng, nhưng tôi đã thấy * rất nhiều người * có * rất nhiều * đau gây ra từ điều này ... thực sự, các vấn đề trong 'BinaryFormatter' là một phần lý do tại sao tôi đã tham gia rất nhiều vào tuần tự hóa vài năm trở lại –
Thuộc tính này được tái hiển thị trong 'ISerializable.GetObjectData (...)', vì vậy về mặt kỹ thuật, bất kỳ triển khai nào ** có thể về mặt lý thuyết ** chọn làm điều gì đó khác dựa trên giá trị 'StreamingContextStates'. Tôi không biết có bao nhiêu, nếu có, * làm *, mặc dù –
@MarcGravell Thú vị, cảm ơn. (Và có lẽ mẫu đó nên được đưa ra khỏi CLR Qua C# cho phiên bản tiếp theo sau đó.;) –