У меня есть интерфейс и объект, который его реализует:
- Код: Выделить всё
type
ISubscriber = interface
procedure Notify(AEvent: string);
end;
{ TSubscriber }
TSubscriber = class (TSomeClass, ISubscriber)
public
procedure Notify(AEvent: string); virtual;
end;
А еще у меня есть список TStringList, в который добавляются ссылки на эти объекты (причем объекты могут быть разными и не иметь общего предка, но они все наследники от TObject и теоретически реализуют интерфейс ISubscriber. Я даже морально готов получать AV, если интерфейс не реализован в объекте в списке). И я хочу вызывать этот интерфейс из списка:
- Код: Выделить всё
TSubscriber (FList.Objects[i]).Notify(AEvent); // 1. это работает
ISubscriber(FList.Objects[i]).Notify(AEvent); // 2. это не работает - "Class or Object types "TObject" and "ISubscriber" are not related"
В этом топике написано, что директива {$OBJECTCHECKS OFF} должна решать проблему, но у меня не решает.
Можно эту проблему решить или придется делать всем объектам общего предка, реализующего интерфейс, и приводить к нему?