С новым расширенным RTTI в Delphi 2010 приложение Delphi (во время выполнения) создает список всех классов, реализующих данный интерфейс?Перечислить все классы Delphi, реализующие данный интерфейс?
8
A
ответ
20
Технически да, если интерфейс имеет идентификатор GUID, а классы, о которых вы заботитесь, находятся в разделах интерфейса устройств.
Модуль RTTI еще не имеет API для описания всех интерфейсов, которые реализует класс, но данные находятся в информации типа.
идентификатор GUID для типа интерфейса может быть получен из этого выражения:
GetTypeData(TypeInfo(ITheInterface))^.Guid
или:
ctx: TRttiContext;
// ...
(ctx.GetType(TypeInfo(ITheInterface)) as TRttiInterfaceType).GUID
Класса типа экземпляра, то можно проверить с помощью TClass.GetInterfaceEntry(IID)
- если она возвращает ненулевой -но, класс реализует интерфейс.
Все классы, объявленные в разделах интерфейса блоков, могут быть получены через TRttiContext.GetTypes
.
Написание фактического кода итерации и извлечения оставлено в качестве упражнения для читателя.
Смежные вопросы
- 1. Как найти все классы, реализующие данный интерфейс?
- 2. Как перечислить все элементы, реализующие общий интерфейс?
- 3. Можно ли получить все классы, реализующие интерфейс?
- 4. Отслеживать все классы, реализующие определенный интерфейс?
- 5. Как получить все классы, реализующие указанный интерфейс
- 6. Java-классы, реализующие интерфейс Serializable
- 7. Как я могу ссылаться на все компоненты, реализующие данный интерфейс?
- 8. Как я могу отслеживать (перечислять) все классы, реализующие интерфейс
- 9. Как вводить зависимости в классы, реализующие интерфейс?
- 10. Как получить все классы, реализующие один и тот же интерфейс?
- 11. NUnit - Как протестировать все классы, реализующие определенный интерфейс.
- 12. Как получить все классы, реализующие интерфейс в определенном комплекте OSGi
- 13. LINQ to SQL классы, реализующие интерфейс
- 14. Список всех классов в пакете, который реализует данный интерфейс
- 15. Как найти все классы, реализующие IDisposable?
- 16. Получить все бобы, реализующие общий интерфейс весной
- 17. В полиморфизме Java, могут ли быть созданы все классы, реализующие интерфейс, как интерфейс этого типа?
- 18. Почему классы, реализующие интерфейс Serializable, не реализуют никаких методов интерфейса?
- 19. Symfony Container - теги, реализующие интерфейс
- 20. Рефакторинг кода. Классы, реализующие один и тот же интерфейс
- 21. Почему массив ссылок на классы интерфейса интерфейса, реализующие этот интерфейс?
- 22. Eclipse - найти все классы, расширяющие интерфейс
- 23. метод, который принимает только классы, реализующие определенный интерфейс
- 24. Как перечислить все классы, соответствующие протоколу в Swift?
- 25. Разделительный интерфейс и классы реализации в delphi?
- 26. Вложенные классы и реализующие интерфейсы в java
- 27. Как найти все поля, имеющие классы, реализующие указанный интерфейс в intelliJ?
- 28. Как перечислить все устаревшие классы в файл?
- 29. Невозможно перечислить все классы класса - Возможная ошибка?
- 30. Есть ли способ получить все классы, реализующие определенный метод?