Wenn man die
Unit C erstellt, TList<Integer> dort einfügt, ihr einen bestimmten Typnamen gibt und diese
Unit und diesen Typ verwendet, greift das Ganze auf die allgemeine Typverwendung zurück. Der Unterschied ist meines Wissens nach sehr signifikant
Leider falsch.
Das stimmt, aber wenn man eine eigene Klasse ableitet wie hier...
...
Da das Klassen sind, kann man doch auch noch anders ableiten.
Delphi-Quellcode:
TIntegerList = TList<Integer>;
TCountList = class(TIntegerList);
TWidthList = class(TIntegerList);
TLengthList = class(TIntegerList);
Äh - na klar geht auch. Vermutlich sogar etwas schöner.
Und hilft das?
Dann funktioniert es. Dann ist die konsumierende kompilierte
Unit wieder entsprechend kleiner. Dafür reicht auch:
Delphi-Quellcode:
TCountList = class(TList<Integer>);
TTextList = class(TList<string>);
Hintergrund ist, dass entscheidend ist, wo der generische Parameter aufgelöst wird. Diese
DCU enthält entsprechend den Code. Wenn man einen so aufgelösten abgeleiteten Typ ohne generischen Parameter anderswo verwendet, enthält die betreffende
Unit auch nicht mehr den Code der ursprünglichen generischen Klasse, selbst wenn man weitere Klassen davon ableitet.