Я пытаюсь просмотреть список объектов, но я просто хочу предоставить интерфейс, реализованный моими объектами.
У меня есть 2 случая: просто перечисление через мой список внутри (что не является большой проблемой, я мог бы просто использовать объект вместо интерфейса) и свойство.
ITemplate = interface
...
end;
TTemplate = class (TInterfacedObject, ITemplate)
...
end;
TMyClass = class
strict private
FTemplates: TObjectList<TTemplate>;
function GetTemplates: IEnumerable<ITemplate>;
...
public
property Templates: IEnumerable<ITemplate> read GetTemplates;
...
procedure TMyClass.LoopTroughInternally;
var
template: ITemplate;
begin
for template in FTemplates do // isn't working, of course
foobar(template);
end;
function TMyClass.GetTemplates: IEnumerable<ITemplate>;
begin
// dunno what to do here...
end;
Есть ли способ предоставить этот перечислитель без реализации конкретного IEnumerable?