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)