Mit "nativ" meinte ich "Nur mit den Mitteln dessen, was Delphi selber kann", also ohne Fremdkomponenten und möglichst ohne viel selbst zu basteln.
Die ersten Beiden sollten schon funktionieren (zumindestens im NextGen/WEAKINTREF),
Delphi-Quellcode:
type
TParent = class(TInterfacedObject, IParent)
FChild: IChild;
end;
TChild = class(TInterfacedObject, IChild)
[Weak] FParent: IParent;
end;
Delphi-Quellcode:
type
TParent = class(TInterfacedObject, IParent)
FChilds: TList<IChild>;
end;
TChild = class(TInterfacedObject, IChild)
[Weak] FParent: IParent;
end;
aber hier hängt es, also wie man das genau "definiert".
Delphi-Quellcode:
type
TParent = class(TInterfacedObject, IParent)
FLink: ILink;
end;
TLink = class(TInterfacedObject, ILink)
FParents: TList<[Weak] IParent>;
end;
Wenn Delphi das dann in den nächsten 20 Jahren endlich mal in allen Compileren richtig drin hat,
(k.A. warum man [Weak] für Interfaces nicht überall eingebaut hat
)
dann wäre jetzt kein weiterer Code mehr nötig.