Gần đây tôi đã xem xét Chuỗi thời gian chạy và xuất hiện trên giao diện ISerializationSurrogate
. Tôi nhầm lẫn về nó là phương pháp SetObject
tuy nhiên.Tại sao ISerializationSurrogate.SetObject trả về một đối tượng cũng như lấy một đối tượng để điền?
Chữ ký là:
object SetObjectData(object obj, System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context, System.Runtime.Serialization.ISurrogateSelector selector)
và thông tin trợ giúp là:
Tóm tắt:
populates các đối tượng sử dụng các thông tin trong System.Runtime.Serialization .SerializationInfo.
Tham số:
obj: Đối tượng để cư trú.
thông tin: Thông tin để điền đối tượng.
ngữ cảnh: Nguồn mà đối tượng được deserialized.
bộ chọn: Bộ chọn thay thế nơi tìm kiếm đại diện tương thích bắt đầu.
Returns:
Các dân đối tượng deserialized.
Nếu obj
là đối tượng để điền, tại sao nó trả về The populated deserialized object
? Trong một số example từ MSDN, chúng cư trú obj
và return null
.
Tôi đoán là nó cung cấp cho bạn cơ hội tạo một phiên bản mới và trả lại thay vì điền vào ví dụ hiện tại (nếu có một số trình cài đặt bị thiếu), nhưng bạn sẽ phải kiểm tra ... – Seb
Nó sẽ xuất hiện nếu bạn trả về null, 'SurrogateSelector' trả về tham số' obj' nhưng nếu bạn trả về một đối tượng, đó là đối tượng được truyền lại. Có vẻ là một cách kỳ lạ để làm mọi thứ nếu bạn hỏi tôi. –