Với RTTI mở rộng mới trong Delphi 2010, một ứng dụng Delphi (tại thời gian chạy) có xây dựng một danh sách tất cả các lớp thực hiện một giao diện cụ thể không?Liệt kê tất cả các lớp Delphi thực hiện một giao diện cụ thể?
8
A
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
- 1. Bắt tất cả các lớp thực hiện một giao diện cụ thể trong WinRT
- 2. Thực hiện ngay tất cả các lớp đang triển khai một giao diện cụ thể
- 3. NetworkInterface.getNetworkInterfaces() không liệt kê tất cả các giao diện
- 4. Cách tìm tất cả các lớp thực hiện giao diện cụ thể?
- 5. Theo dõi tất cả các lớp triển khai một giao diện cụ thể?
- 6. Liệt kê tất cả virtualenv
- 7. Làm thế nào tôi có thể phát hiện tất cả các giao diện một đối tượng COM thực hiện?
- 8. Groovy Liệt kê tất cả các thuộc tính cho lớp
- 9. Liệt kê tất cả các kho SVN
- 10. Psql liệt kê tất cả các bảng
- 11. Cách liệt kê tất cả các thuộc tính của lớp
- 12. Cách liệt kê tất cả các thẻ trỏ đến một cam kết cụ thể trong git
- 13. Liệt kê tất cả các chỉ mục
- 14. Xác định xem một lớp có thực hiện một giao diện rất cụ thể hay không
- 15. Thực hiện các giao diện trong C++ với các lớp cụ thể kế thừa
- 16. Eclipse: liệt kê các phương thức và biến của tất cả các lớp
- 17. Làm thế nào để tìm tất cả các trường hợp của các loại thực hiện một giao diện cụ thể trong khi gỡ lỗi
- 18. danh sách các đối tượng java rằng tất cả thực hiện một giao diện
- 19. Grep Regex: Liệt kê tất cả các dòng trừ
- 20. Liệt kê tất cả các hàm dựng sẵn trong javascript?
- 21. Applescript - liệt kê tất cả các ứng dụng đang chạy
- 22. Liệt kê các giá trị có thể đặt trong Delphi
- 23. Liệt kê tất cả các hội đồng .NET có sẵn
- 24. gnu make: liệt kê các giá trị của tất cả các biến (hoặc "macro") trong một chạy cụ thể
- 25. Tự động liệt kê tất cả các thành viên của một lớp
- 26. Liệt kê tất cả các gói có sẵn trên CRAN để bàn giao tiếp
- 27. AppleScript - Liệt kê tất cả các phông chữ
- 28. Liệt kê tất cả các đối tượng của một lớp nhất định
- 29. công cụ linux để liệt kê tất cả các chức năng trong tệp nguồn?
- 30. liệt kê tất cả các quy trình trong iOS 5.0.1