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

113

Chương 3: Miền ứng dụng, cơ chế phản chiếu, và siêu dữ liệu

}

14.

14.

S d ng c ch ph n chi u đ ki m tra

ử ụ

ơ ế ả

ế ể ể

S d ng c ch ph n chi u đ ki m tra

ử ụ

ơ ế ả

ế ể ể

các đ c tính c a m t ph n t ch

ng trình

ủ ộ

ầ ử ươ

các đ c tính c a m t ph n t ch

ng trình

ủ ộ

ầ ử ươ

Bạn muốn sử dụng cơ chế phản chiếu để kiểm tra các đặc tính tùy biến đã được
áp dụng cho một phần tử chương trình.

Gọi phương thức

GetCustomAttributes

của đối tượng dẫn xuất từ lớp

System.Reflection.MemberInfo

(đối tượng này mô tả phần tử chương trình cần

kiểm tra).

Tất cả các lớp mô tả các phần tử chương trình đều dẫn xuất từ lớp

MemberInfo

. Lớp này bao

gồm

Type

,

EventInfo

,

FieldInfo

,

PropertyInfo

, và

MethodBase

.

MethodBase

có thêm hai lớp

con:

ConstructorInfo

MethodInfo

. Bạn có thể gọi phương thức

GetCustomAttributes

nếu

có được bất kì đối tượng nào của các lớp này. Phương thức này sẽ trả về mảng chứa các đặc
tính tùy biến đã được áp dụng cho phần tử chương trình. Chú ý là mảng này chỉ chứa các đặc
tính tùy biến chứ không chứa các đặc tính có sẵn trong thư viện các lớp cơ sở của .NET
Framework
.
Phương thức

GetCustomAttributes

có hai dạng thức. Dạng đầu tiên nhận một đối số

bool

để

xác định phương thức này có trả về các đặc tính được thừa kế từ các lớp cha hay không. Dạng
thứ hai nhận thêm một đối số

Type

có vai trò như một bộ lọc, kết quả trả về là các đặc tính

thuộc kiểu đã được chỉ định bởi

Type

.

Ví dụ sau sử dụng đặc tính tùy biến

AuthorAttribute

đã được khai báo trong mục 3.13 và áp

dụng nó vào lớp

GetCustomAttributesExample

. Phương thức

Main

sẽ gọi phương thức

GetCustomAttributes

, lọc các đặc tính để kết quả trả về chỉ có các thể hiện của

AuthorAttribute

. Bạn có thể thực hiện ép kiểu an toàn các đặc tính này về tham chiếu

AuthorAttribute

và truy xuất các thành viên của chúng mà không cần sử dụng cơ chế phản

chiếu.

using System;

[Author("Stephen Chau")]

[Author("Square Nguyen", Company = "Goldsoft Ltd.")]

public class GetCustomAttributesExample {

public static void Main() {

// Lấy đối tượng Type cho chính lớp này.

Type type = typeof(GetCustomAttributesExample);

// Lấy các đặc tính cho kiểu này. Sử dụng bộ lọc để

// kết quả trả về chỉ có các thể hiện của AuthorAttribute.

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.