PS: Wenn es dir nur darum geht, dass es wie ein Interface/Objekt aussieht, also die Methoden und die Daten zusammen und die Funktionen in der "Klasse" drin,
dann kann man die einzelnen Funktionen auch als Methoden
in den Record verschieben, statt einem Parameter auf Self zugreifen und fertig.
Bezüglich des Kopierens kannst dann diesen Record weiterhin genauso behandeln, wie bisher.
Ansonsten nimmt man im Allgemeinen eine Funktion, welche sich
TPersistent.Assign bzw.
TPersistent.AssignTo nennt.
Da drin mußt du dann die Property/Felder des einen Objekts in das andere Kopieren.
Beim normalen Assign mit allgemeinem Typen wird intern nochmals geprüft, ob der Typ passt,
aber hier kannst du einfach dem Parameter den richtigen Typen geben und schon kann nur der richtige Typ reingegeben werden.