Как зарегистрировать два класса с циклическими ссылками в DWScript?

Мне нужно зарегистрировать классы TCollection и TCollectionItem, но из-за свойств

{TCollection}
property Items [Index: Integer]: TCollectionItem
{TCollectionItem}
property Collection: TCollection

постоянно выдает исключение о невозможности найти тип TCollectionItem/TCollectionItem.


person Alexey Ignatenko    schedule 23.09.2016    source источник
comment
Вы используете класс автоматической регистрации RTTI или регистрируете класс самостоятельно?   -  person DragonFlyOfGold    schedule 23.09.2016


Ответы (2)


Если вы регистрируете класс самостоятельно в коде, вы можете сначала зарегистрировать TCollectionItem без property Collection: TCollection, затем зарегистрировать TCollection с property Items [Index: Integer]: TCollectionItem, а затем добавить property Collection: TCollection к вашему TCollectionItem.

person DragonFlyOfGold    schedule 23.09.2016
comment
Но исключение возникает в процедуре DoGenerate при компиляции кода. Как я могу зарегистрировать свойство Collection: TCollection до регистрации класса TCollection??? - person Alexey Ignatenko; 23.09.2016

Вы можете использовать:

type
  TCollection = class;

  TCollectionItem = class
  published
    property Items: TCollection;
  end;

  TCollection = class
  published
    property Items [Index: Integer]: TCollectionItem;
  end;
person Toky Olivier Razanakotonarivo    schedule 11.09.2020