− Serializing: phát sinh trước khi serialize bắt đầu
• Thêm thuộc tính OnSerializing trước phương thức
− Serialized: phát sinh sau khi serialize hoàn tất
• Thêm thuộc tính OnSerialized trước phương thức
− Deserializing: phát sinh trước khi deserialize bắt đầu
• Thêm thuộc tính OnDeserializing trước phương thức
− Deserialized: phát sinh sau khi serialize kết thúc
Serialization begins Deserialization begins Serialize Deserialize [OnSerializing] Serialization occurs [OnDeserializing] Deserialization occurs Serialization occurs [OnSerialized] Deserialization occurs IDeserializationCallback, OnDeserialization Serialization completed [OnSerialized]
• Các sự kiện trong Serialization
− Các sự kiện này là cách tốt nhất và dễ dàng nhất để điều khiển tiến trình chuyển đổi
[Serializable]
public class ShoppingCartItem : ISerializable { public Int32 productId;
điều khiển tiến trình chuyển đổi.
• Không can thiệp vào serialization stream
• Cho phép hiệu chỉnh đối tượng trước và sau serialize
public decimal price; public Int32 quantity; public decimal total;
Cho phép hiệu chỉnh đối tượng trước và sau serialize (deserialize)
− Yêu cầu cho các phương thức xử lý các sự kiện
[OnSerializing] void CalculateTotal(StreamingContext sc){ total=price*quantity;
}
[OnDeserialization] void CheckTotal(StreamingContext sc){
• Có tham số là đối tượng StreamingContext
• Không trả về kết quả
• Có th ộ tí h t thí h ới kiệ ầ thiệ
[OnDeserialization] void CheckTotal(StreamingContext sc){ if (total==0){
CalculateTotal(sc); }
• Có thuộc tính t}ương thích với sự kiện cần can thiệp
− Khi serialize 1 đối tượng: không cần quan tâm đích đến
− Trong vài trường hợp: serialize và deserialize sẽ khác
− Trong vài trường hợp: serialize và deserialize sẽ khác nhau phụ thuộc vào đích đến
− Cấu trúc StreamingContext cung cg g ấp thông tinp g đích
đến của đối tượng được serialize cho lớp xử lý thực thi interface Iserializable
• StreamingContext có 2 thuộc tính:
• StreamingContext có 2 thuộc tính:
–– ContextContext:: thamtham chichiếếuu đếđếnn đốđối ti tượượngng chchứứaa thôngthông tintin ngngữữ
cảnh cảnh
• Các cCác cờờ hihiệệu cu củủa thua thuộộc tính Statec tính State − CrossProcess − CrossMachine − File − Persistence − Remoting − Other − CloseClose − CrossAppDomain − All