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