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

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

// Nạp địa chỉ từ kho lưu trữ.

}

return address;

}

set {

address = value;

}

}

}

Đối với phần lớn các kiểu tùy biến, việc sử dụng đặc tính

SerializableAttribute

NonSerializedAttribute

sẽ đáp ứng đủ nhu cầu tuần tự hóa của bạn. Nếu cần kiểm soát quá

trình tuần tự hóa, bạn cần hiện thực giao diện

ISerializable

. Các lớp formatter sử dụng logic

khác nhau khi tuần tự hóa và giải tuần tự hóa thể hiện của các kiểu có hiện thực

ISerializable

. Để hiện thực đúng

ISerializable

, bạn phải:

Khai báo rằng kiểu của bạn có hiện thực giao diện

ISerializable

.

Áp dụng đặc tính

SerializableAttribute

vào khai báo kiểu như vừa được mô tả;

không sử dụng

NonSerializedAttribute

vì nó sẽ không có tác dụng.

Hiện thực phương thức

ISerializable.GetObjectData

(được sử dụng trong quá trình

tuần tự hóa), phương thức này nhận các kiểu đối số sau:

System.Runtime.Serialization.SerializationInfo

System.Runtime.Serialization.StreamingContext

Hiện thực một phương thức khởi dựng không công khai (được sử dụng trong quá trình
giải tuần tự hóa), phương thức này nhận cùng đối số như phương thức

GetObjectData

.

Nhớ rằng, nếu bạn có ý định dẫn xuất một số lớp từ lớp khả-tuần-tự-hóa thì phương
thức khởi dựng này phải là

protected

.

Nếu bạn tạo một lớp khả-tuần-tự-hóa từ một lớp cơ sở cũng có hiện thực

ISerializable

, thì phương thức

GetObjectData

và phương thức khởi dựng (dùng để

giải tuần tự hóa) của bạn phải gọi các phương thức tương đương trong lớp cha.

Trong quá trình tuần tự hóa, formatter sẽ gọi phương thức

GetObjectData

và truyền cho nó

các tham chiếu

SerializationInfo

StreamingContext

.

Bạn phải đổ dữ liệu cần tuần tự hóa vào đối tượng

SerializationInfo

. Lớp

SerializationInfo

cung cấp phương thức

AddValue

dùng để thêm dữ liệu. Với mỗi lần

gọi

AddValue

, bạn phải chỉ định tên dữ liệu (tên này sẽ được sử dụng trong quá trình

giải tuần tự hóa để thu lấy dữ liệu). Phương thức

AddValue

có đến 16 phiên bản nạp

chồng, cho phép bạn thêm nhiều kiểu dữ liệu khác nhau vào đối tượng

SerializationInfo

.

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.