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

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

using System;

using System.Runtime.Serialization;

// Đánh dấu CustomException là Serializable (khả-tuần-tự-hóa).

[Serializable]

public sealed class CustomException : ApplicationException {

// Các thành viên dữ liệu tùy biến cho CustomException.

private string stringInfo;

private bool booleanInfo;

// Ba phương thức khởi dựng chuẩn; chỉ cần gọi phương thức

// khởi dựng của lớp cơ sở (System.ApplicationException).

public CustomException() : base() {}

public CustomException(string message): base(message) {}

public CustomException(string message, Exception inner)

: base(message, inner) {}

// Phương thức khởi dựng giải tuần tự hóa (cần cho giao diện

// ISerialization). Vì CustomException là sealed nên phương thức

// khởi dựng này là private. Nếu CustomException không phải là

// sealed thì phương thức khởi dựng này nên được khai báo là

// protected để các lớp dẫn xuất có thể gọi nó trong quá trình

// giải tuần tự hóa.

private CustomException(SerializationInfo info,

StreamingContext context) : base (info, context) {

// Giải tuần tự hóa mỗi thành viên dữ liệu tùy biến.

stringInfo = info.GetString("StringInfo");

booleanInfo = info.GetBoolean("BooleanInfo");

}

// Các phương thức khởi dựng cho phép mã lệnh thiết lập