Ich habe eine Liste von Klasseninstanzen verschiedener Art. Ich muss in der Lage sein, eine neue Instanz einer Klasse zu erstellen, ohne genau zu wissen, was ich erstellen soll. Alle beteiligten Objekte haben denselben Vorfahren. Das eigentliche Kopieren der Objektvariablen des Objekts ist einfach ... es ist die Erstellung des neuen Objekts, wo ich ein Problem habe.Wie kann ich eine neue Instanz einer Klasse erstellen?
allerdings könnte ich so etwas tun:
case MyObjectTypeInstance.MyTypeEnum of
obj1:
Result:=TObjectType1.Create;
obj2:
Result:=TObjectType2.Create;
obj3:
Result:=TObjectType3.Create;
end;
, die das „offen/geschlossen-Prinzip“ nicht folgen würden.
ursprünglich dachte ich, ich könnte etwas wie "Ergebnis: = MyObjectTypeInstance.Create;" aber das funktionierte nicht wie erhofft wegen Zerstörungsschwierigkeiten.
hier ist die letzte Vermutung, wie ich dies tun ...
var
fooA, fooB:TFoo;
begin
fooA:=TFoo2.Create; // it could be any of many types
fooB:=? // how to create fooB of same class type as fooA????
// do something
fooA.Free;
fooB.Free;
end;
i this'd einfacher hätte gedacht werden sollte!
danke für Ihre Hilfe!
ja ... natürlich! Ich hätte daran denken sollen! Danke! –