CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 612

612
Chương 16: Các giao diện và mẫu thông dụng

// Phương thức khởi dựng dùng để kích hoạt formatter thực hiện việc

// giải tuần tự hóa một đối tượng Employee. Bạn nên khai báo

// phương thức khởi dựng này là private, hay ít nhất cũng là

// protected để bảo đảm nó không bị gọi quá mức cần thiết.

private Employee(SerializationInfo info, StreamingContext context) {

// Trích xuất tên và tuổi của Employee (sẽ luôn hiện diện

// trong dữ liệu đã-được-tuần-tự-hóa bất chấp giá trị

// của StreamingContext).

name = info.GetString("Name");

age = info.GetInt32("Age");

// Thực hiện trích xuất địa chỉ của Employee

// (thất bại nếu không có).

try {

address = info.GetString("Address");

} catch (SerializationException) {

address = null;

}

}

// Các thuộc tính Name, Age, và Address (đã trình bày ở trên).

§

// Được khai báo bởi giao diện ISerializable, phương thức

// GetObjectData cung cấp cơ chế để formatter thu lấy

// dữ liệu sẽ-được-tuần-tự-hóa.

public void GetObjectData(SerializationInfo inf,

StreamingContext con){

// Luôn tuần tự hóa tên và tuổi của Employee.

inf.AddValue("Name", name);

inf.AddValue("Age", age);

// Không tuần tự hóa địa chỉ của Employee nếu StreamingContext

// cho biết rằng dữ liệu được-tuần-tự-hóa sẽ được ghi ra file.