It could, but I have a base class that I can derive from which has implemented in the base
LoadFrom
SaveTo
Strings, Streams, Files
and my method allows for that.
I also use a Generic TObjectList to do the same kind of thing.
e.g.
procedure TBEObjectList<T>.LoadFromStream(const Stream: TStream; const ITS : TInstanceTypeSerialization = TInstanceTypeSerialization.IfNeeded);
var V : TValue;
JD : TJsonDeserializer;
TT : TTypeToken;
begin
Clear;
V := TValue.From(Self);
TT := TTypeToken.Create( V.TypeInfo);
JD := TJsonDeserializer.Create;
JD.Converters.ObjectConverterFactory.InstanceTypeSerialization := ITS;
try
Stream.Position := 0;
JD.Read(Stream, V, TT);
finally
JD.Free;
end;
end;