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

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

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;

}

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.