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

641

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

Hiện thực thêm các thuộc tính và các thành viên dữ liệu để hỗ trợ trạng thái sự kiện mà
bạn cần truyền cho các phương thức thụ lý sự kiện. Tốt nhất là làm cho trạng thái sự
kiện trở nên bất biến (immutable), như vậy bạn nên sử dụng các thành viên dữ liệu

private

readonly

và sử dụng các thuộc tính

public

để cho phép truy xuất chỉ-đọc đến

các thành viên dữ liệu này.

Hiện thực một phương thức khởi dựng

public

hỗ trợ cấu hình ban đầu của trạng thái sự

kiện.

Làm cho lớp đối số sự kiện của bạn trở nên khả-tuần-tự-hóa (serializable) để bộ thực
thi có thể marshal các thể hiện của nó qua các biên miền ứng dụng và biên máy. Áp
dụng đặc tính

System.SerializableAttribute

thường là đã đủ cho các lớp đối số sự

kiện. Tuy nhiên, nếu lớp đối số sự kiện có các yêu cầu tuần tự hóa đặc biệt, bạn phải
hiện thực giao diện

System.Runtime.Serialization.ISerializable

(xem mục 16.1 để

biết cách làm cho một lớp trở nên khả-tuần-tự-hóa).

Đoạn mã dưới đây trình bày một lớp đối số sự kiện tùy biến có tên là

MailReceivedEventArgs

.

Giả sử có một mail-server truyền các thể hiện của lớp

MailReceivedEventArgs

cho các

phương thức thụ lý sự kiện nhận một thông điệp e-mail. Lớp này chứa các thông tin về người
gửi và chủ đề của thông điệp e-mail.

using System;

[Serializable]

public sealed class MailReceivedEventArgs : EventArgs {

// Các thành viên private readonly giữ trạng thái sự kiện

// (được phân bổ cho tất cả các phương thức thụ lý sự kiện).

// Lớp MailReceivedEventArgs sẽ cho biết ai đã gửi mail

// và chủ đề là gì.

private readonly string from;

private readonly string subject;

// Phương thức khởi dựng (khởi tạo trạng thái sự kiện).

public MailReceivedEventArgs(string from, string subject) {

this.from = from;

this.subject = subject;

}

// Các thuộc tính chỉ-đọc cho phép truy xuất

// trạng thái sự kiện.

public string From { get { return from; } }

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.