Object kopieren richtig gemacht.

26/03/2009 - 10:18 von Michael | Report spam
Hallo zusammen
ich habe mir ein Object ("custom") gebaut mit vielen unterobjekten.
this.ogentreetemplate

das soll in object kopiert werden namens this.ogenericobjecttree

this.ogenericobjecttree = this.ogentreetemplate

Wenn ich nun am this.ogenericobjecttree etwas veràndere, eweitere àndert
sich leider auch this.ogentreetemplate
Wie vermiede ich das?
Also wie bring ich Fox dazu das Object zu kopieren und nicht die dieselbe
referenz zu benutzen

Danke und Gruss
 

Lesen sie die antworten

#1 Dag Westerkamp
26/03/2009 - 10:55 | Warnen spam
ich habe mir ein Object ("custom") gebaut mit vielen unterobjekten.
this.ogentreetemplate

das soll in object kopiert werden namens this.ogenericobjecttree

this.ogenericobjecttree = this.ogentreetemplate

Wenn ich nun am this.ogenericobjecttree etwas veràndere, eweitere
àndert sich leider auch this.ogentreetemplate
Wie vermiede ich das?
Also wie bring ich Fox dazu das Object zu kopieren und nicht die
dieselbe referenz zu benutzen



Mit "this.ogenericobjecttree = this.ogentreetemplate" legst du ja kein
neues Objekt an, sondern kopierst nur die Referenz.

Du musst das Objet "clonen". Soweit ich weiss, bietet Foxpro dafür
keinen eigenen Mechanismus, also musst du dir das selber programmieren.

Du könntest also deiner "custom" Klasse z.B. eine Methode "CloneMe"
verpassen. Darin machst du mit CreateObject ein neues Objekt von genau
dieser Klasse und übernimmst alle Eigenschaftenwerte von "this".
Anschließend gibst du das neu erzeugte Objekt als Returnwert aus der
"CloneMe" Methode zurück.

Das könnte dann am Ende so aussehen:
this.ogenericobjecttree = this.ogentreetemplate.CloneMe()

Alternativ könntest du aus dem ersten Objekt auch einen XML String
erzeugen (aber ich glaube da gibts auch nichts fertiges in Foxpro) und
anschließend aus dem XML beliebig viele neue Objekt generieren.

Nur mal so am Rande:
Das wàre unter .NET ein Kinderspiel! (Stichwort: Serialisieren) ;-)

Ähnliche fragen