2010-02-06 39 views

Trả lời

20

Về mặt kỹ thuật, miễn là giao diện có GUID và các lớp bạn quan tâm nằm trong phần giao diện của các đơn vị.

Đơn vị RTTI không (chưa) có API để mô tả tất cả các giao diện mà một lớp thực hiện, nhưng dữ liệu nằm trong thông tin loại.

Các GUID cho một kiểu giao diện có thể được nhận từ biểu thức này:

GetTypeData(TypeInfo(ITheInterface))^.Guid 

hay:

ctx: TRttiContext; 
// ... 
(ctx.GetType(TypeInfo(ITheInterface)) as TRttiInterfaceType).GUID 

Lớp của các loại ví dụ sau đó có thể được kiểm tra bằng TClass.GetInterfaceEntry(IID) - nếu nó trả về không -nil, lớp thực hiện giao diện.

Tất cả các lớp được khai báo trong phần giao diện của các đơn vị có thể được truy xuất qua TRttiContext.GetTypes.

Viết lặp lại thực tế và mã trích xuất được để lại dưới dạng bài tập cho người đọc.

Các vấn đề liên quan