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.