611
Chương 16: Các giao diện và mẫu thông dụng
•
Đối tượng
StreamingContext
cung cấp các thông tin về chủ định và đích của dữ liệu
được-tuần-tự-hóa, cho phép bạn chọn tuần tự hóa dữ liệu nào. Ví dụ, bạn có thể cần
tuần tự hóa dữ liệu riêng nếu nó được dành cho một miền ứng dụng khác trong cùng
tiến trình, nhưng không cần nếu dữ liệu sẽ được ghi ra file.
Trong quá trình giải tuần tự hóa, formatter sẽ gọi phương thức khởi dựng việc giải tuần tự
hóa, lại truyền cho nó các tham chiếu
SerializationInfo
và
StreamingContext
.
•
Kiểu của bạn phải trích dữ liệu đã-được-tuần-tự-hóa từ đối tượng
SerializationInfo
bằng một trong các phương thức
SerializationInfo.Get*
, ví dụ:
GetString
,
GetInt32
,
hay
GetBoolean
.
•
Đối tượng
StreamingContext
cung cấp các thông tin về nguồn gốc của dữ liệu đã-được-
tuần-tự-hóa, phản ánh logic mà bạn đã hiện thực cho việc tuần tự hóa.
Trong quá trình tuần tự hóa chuẩn, formatter không sử dụng khả năng của đối
tượng
StreamingContext
để cho biết các chi tiết về nguồn gốc, đích, và chủ định
của dữ liệu được-tuần-tự-hóa. Tuy nhiên, nếu muốn thực hiện quá trình tuần tự
hóa tùy biến, bạn có thể cấu hình đối tượng
StreamingContext
của formatter
trước khi bắt đầu quá trình tuần tự hóa và giải tuần tự hóa. Tham khảo tài liệu
.NET Framework SDK để có thêm thông tin về lớp
StreamingContext
.
Ví dụ dưới đây trình bày phiên bản đã được chỉnh sửa của lớp
Employee
, có hiện thực giao
diện
ISerializable
. Trong phiên bản này, lớp
Employee
không tuần tự hóa trường
address
nếu đối tượng
StreamingContext
chỉ định rằng đích của dữ liệu được-tuần-tự-hóa là file.
Phương thức
Main
sẽ giải thích việc tuần tự hóa và giải tuần tự hóa của một đối tượng
Employee
.
using System;
using System.Runtime.Serialization;
[Serializable]
public class Employee : ISerializable {
private string name;
private int age;
private string address;
// Phương thức khởi dựng đơn giản.
public Employee(string name, int age, string address) {
this.name = name;
this.age = age;
this.address = address;
}