Kann Lazarus Generics?
...dann
Items : TObjectList<TConnection>;
Ja, dort wurde schon vor 'ner Weile auch sowas gebaut.
Aber da es ja eine Eigentwicklung ist ... da ist das dann in FreePascal dann auch öfters auch bissl anders gelöst, bzw. man muß im passenden Modus kompilieren.
https://wiki.freepascal.org/Generics
Normale TList/TObjectList gegenüber generischer TList<T>/TObjectList<T>,
dort ist einfach, dass da der Typcast bereits eingebaut ist und das auch alles durch die Typprüfung des Compilers behandelt wird. (weniger potentielle Fehler)
Delphi-Quellcode:
TConnectionListe = class
Items : Array of TConnection;
...
end;
TConnectionListe = class
Items : TObjectList<TConnection>; // enthält eine Liste
...
end;
// ConnectionListe.Items.Add
TConnectionListe = class(TObjectList<TConnection>) // ist selbst die Liste
...
end;
// ConnectionListe.Add
Und natürlich im Destructor nicht vergessen die Items (die vielen TConnection) nicht vergessen freizugeben.
Die ObjectListe hat da den Vorteil das über OwnsObjects automatisch machen zu können.
Außerdem in TConnection.Destroy nicht vergessen das Image freizugeben.