Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.171 Beiträge
 
Delphi 12 Athens
 
#5

AW: Generics: Instanz-Erzeugung in generischer Klasse

  Alt 9. Okt 2011, 22:36
Also, du mußt auf jeden Fall "irgendwie" das virtuelle Create(...) der TComponents aufrufen.

Das ist eben ein krankes Problem der Generics ... du hast zwar gesagt, es sollen nur TComponent und Nachfolger sein, aber scheinbar bieten dir die Generigs nur TObject und Nachfolger an, beim Zugriff auf Methoden, also nur das standardmäßige Create des TObjekts (ohne Vererbung).

Ich würde auch zu TComponentClass(T).Create(nil) tendieren. (wenn ich nicht ständig Probleme bei Typecasts hätte)


Das T(GetTypeData(Info)^.ClassType.Create); geht jedenfalls genauso wenig, da es ebenso wieder nur das Standard-TObject-Create aufruft.
Wenn, dann muß man sich über die RTTI schon das richtige Create besorgen.

Wäre ja schön gewesen, wenn man in TObject das Create virtuell gemacht hätte, dann könnte man dort das Standard-Create auf das entsprechende Create der entsprechenden Komponentenklasse umleiten können. (bei TComponent hätte man Create auf Create(nil) weiterleiten können, wärend bei "ältesten" Create(nil) dann auf inherited Create geleitet)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (10. Okt 2011 um 10:38 Uhr) Grund: stimmt, TComponentClass und nicht TComponent, für den Cast von T
  Mit Zitat antworten Zitat