Các sự kiện trong Serialization

Một phần của tài liệu nền tảng lập trình c bài 9 serialization (Trang 32 - 37)

− 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 kin 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ố đố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

Một phần của tài liệu nền tảng lập trình c bài 9 serialization (Trang 32 - 37)