Hallo zusammen,
ich versuche mich gerade an einer JsonToObject Funktion. Ich hänge aber aktuell an der Stelle, dass ich mehrere TObjectList<T> Instanzen in den Klassen habe. Ich versuche mal es zusammenzufassen:
Delphi-Quellcode:
class function TJsonRttiHelper.JsonToObj<T>(AJson: ISuperObject): T;
// ...
begin
// ..
// prüfung ob es sich um eine generische liste handelt..
if IsGenericList(myprop.GetValue(lObj).AsObject.ClassType) then
begin
// instanz der TObjectList<T>, lList : TObject;
lList := myprop.GetValue(lObj).AsObject;
// Add methode der TObjectList<T> um sie später aufzurufen
proptype := c.GetType(lList.ClassInfo) as TRttiInstanceType;
meth := proptype.GetMethod('Add');
// GetGenericDataTypeName gibt den FQ-Namen des "T" zurück. Also z.B. "MeineDatenunit.TMeinDatentyp"
//lListObj := (c.FindType(GetGenericDataTypeName(myprop.GetValue(lObj).AsObject.ClassType)) as TRttiInstanceType).MetaClassType.Create;
// Hier liegt das Problem. Ich versuche die funktion hier rekursiv aufzurufen, weiß aber nicht genau wie ich "TMeinDatentyp" an die Funktion übergeben kann.
//lListObj := JsonToObj<(c.FindType(GetGenericDataTypeName(myprop.GetValue(lObj).AsObject.ClassType)) as TRttiInstanceType).ClassParent>(itmval);
lListObj := JsonToObj<{HILFE, was muss hier rein? :(}>(itmval);
// aufruf der methode..
meth.Invoke(lList, [lListObj]);
end;
end;
Die Frage ist also, wass an die Stelle rein muss, oder ob es überhaupt möglich ist.
lListObj := JsonToObj<{????}>(itmval);