Wozu willst du eine Spezialisierung? Ich leite immer ab wenn ich es brauche.
Wenn
TObstKorb<TBanane>.Create
funktionieren wuerde, koennte ich in einer generischen Funktion in Abhaengigkeit von T a la
Delphi-Quellcode:
constructor TProgrammModel<T>.Create;
begin
Data := TObstKorb<T>.Create;
end;
die Generik weiterreichen. Das waere doch praktisch, oder?
So wie es aussieht, muss ich aber in jeder generischen Ebene dann so einen Schei*dreck wie
Delphi-Quellcode:
constructor TProgrammModel<T>.Create;
var
AInfo: PTypeInfo;
AInfoData: PTypeData;
tkString: String;
begin
AInfo := System.TypeInfo(T);
AInfoData := GetTypeData(AInfo);
tkString := TypInfo.GetEnumName(System.TypeInfo(T), Ord(AInfoData^.OrdType));
if tkString = 'tkBanane' then
AKorb := TBanenenKorb.Create
else if tkString = 'tkApfel' then
AKorb := TApfelKorb.Create;
end;
machen.
Erst so kann ich AKorb<T: TFrucht> wirklich generisch verwenden?! Und das in jeder generischen Hierarchie-Ebene?
JESUS CHRIST, please kill me.
Oder uebersehe ich da jetzt massiv was...