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

107

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

thức

Type.IsSubclassOf

để kiểm tra đối tượng này có phải là một lớp con của kiểu được chỉ

định hay không.

public static bool IsType(object obj, string type) {

Type t = Type.GetType(type, true, true);

return t == obj.GetType() || obj.GetType().IsSubclassOf(t);

}

Cuối cùng, bạn có thể sử dụng toán tử

as

để ép bất kỳ đối tượng nào sang kiểu được chỉ định.

Nếu đối tượng không thể bị ép sang kiểu được chỉ định, toán tử

as

sẽ trả về

null

. Điều này

cho phép bạn thực hiện các phép ép kiểu an toàn (safe cast), nhưng kiểu được so sánh phải là
khả phân giải lúc thực thi. Dưới đây là một ví dụ:

// Sử dụng toán tử as để thực hiện một phép ép kiểu an toàn.

StringReader reader = someObject as System.IO.StringReader;

if (reader != null) {

// Làm gì đó.

§

}

Phương thức tĩnh

GetUnderlyingType

của lớp

System.Enum

cho phép bạn thu lấy

kiểu thưc sư của một kiểu liệt kê.

12.

12.

T o m t đ i t

ng b ng c ch ph n chi u

ạ ộ ố ượ

ơ ế ả

ế

T o m t đ i t

ng b ng c ch ph n chi u

ạ ộ ố ượ

ơ ế ả

ế

Bạn cần tạo một đối tượng bằng cơ chế phản chiếu.

Thu lấy đối tượng

Type

mô tả kiểu của đối tượng cần tạo, gọi phương thức

GetConstructor

của nó để có được đối tượng

System.Reflection.ConstructorInfo

mô tả phương thức khởi dựng cần dùng, sau đó thực thi phương thức

ConstructorInfo.Invoke

.

Bước đầu tiên trong việc tạo một đối tượng bằng cơ chế phản chiếu là thu lấy đối tượng

Type

mô tả kiểu của đối tượng cần tạo (xem mục 3.10 để biết thêm chi tiết). Khi có được đối tượng

Type

, hãy gọi phương thức

GetConstructor

để thu lấy đối tượng

ConstructorInfo

mô tả một

trong các phương thức khởi dựng của kiểu này. Dạng thức thông dụng nhất của phương thức

GetConstructor

là nhận một mảng

Type

làm đối số, và trả về đối tượng

ConstructorInfo

tả phương thức khởi dựng nhận các đối số được chỉ định trong mảng

Type

. Để thu lấy đối

tượng

ConstructorInfo

mô tả phương thức khởi dựng mặc định (không có đối số), bạn hãy

truyền cho phương thức

GetConstructor

một mảng

Type

rỗng (sử dụng trường tĩnh

Type.EmptyTypes

); đừng sử dụng

null

, nếu không

GetConstructor

sẽ ném ngoại lệ

System.ArgumentNullException

. Nếu

GetConstructor

không tìm thấy phương thức khởi dựng

nào có chữ ký phù hợp với các đối số được chỉ định thì nó sẽ trả về

null

.

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.