Class clone lama yönetminiz var mı? ben json string e a cevirip sonra tekrar class ceviyorum yada TJSONMarshal yöntemi.
bunun dışında sizin kullandığınız var mı?
Kod: Tümünü seç
var
Test1,cloneTest: Tclass;
Test1: =Tclass.create;
Test1.ad:='deneme';
//1 yöntem
cloneTest:= TJson.JsonToObject<Tclass>(TJson.ObjectToJsonString(Test1));
debug(cloneTest.ad); //deneme;
//2 yöntem
cloneTest:= TCloneType.Clone<Tclass>(Test1);
debug(cloneTest.ad); //deneme;
class function TCloneType.Clone<T>(inObject: T): T;//
var
MarshalObj: TJSONMarshal;
UnMarshalObj: TJSONUnMarshal;
JSONValue: TJSONValue;
begin
Result := nil;
try
MarshalObj := TJSONMarshal.Create;
UnMarshalObj := TJSONUnMarshal.Create;
try
JSONValue := MarshalObj.Marshal(inObject as T);
try
if Assigned(JSONValue) then
Result := T(UnMarshalObj.Unmarshal(JSONValue));
finally
FreeAndNil(JSONValue);
end;
finally
FreeAndNil(MarshalObj);
FreeAndNil(UnMarshalObj);
end;
Except
end;
end;