Технически да, если у интерфейса есть GUID, а классы, которые вам нужны, находятся в разделах интерфейса модулей.
Модуль RTTI (пока) не имеет API для описания всех интерфейсов, которые реализует класс, но данные находятся в информации о типе.
GUID для типа интерфейса можно получить из этого выражения:
GetTypeData(TypeInfo(ITheInterface))^.Guid
или
ctx: TRttiContext;
// ...
(ctx.GetType(TypeInfo(ITheInterface)) as TRttiInterfaceType).GUID
Затем можно проверить класс типа экземпляра с помощью TClass.GetInterfaceEntry(IID)
- если он возвращает не ноль, класс реализует интерфейс.
Все классы, объявленные в интерфейсных секциях модулей, можно получить с помощью TRttiContext.GetTypes
.
Написание фактического кода итерации и извлечения оставлено читателю в качестве упражнения.