Hi zusammen!
Ich versuche gerade ähnliches zu machen. Allerdings habe ich noch ein Problem.
Das Objekt erstellen ist ja so kein Problem. Allerdings wird nur mein Constructor der Basisklasse aufgerufen und nicht der des eigentlichen Objektes.
Delphi-Quellcode:
TBaseObjekt =
class (TPersistent)
public
strName :
String;
constructor Create;
overload;
end;
TBaseObjectClass =
class of TBaseObject;
TExtendedObjekt =
class (TBaseObjekt)
public
constructor Create;
overload;
end;
constructor TBaseObjekt.Create;
begin
Self.strName := '
Base';
end;
constructor TExtendedObjekt.Create;
begin
Self.strName := '
Extendet';
end;
procedure Test();
var
cls : TPersistentClass;
obj : TBaseObject;
begin
// Klassenreferenz ermitteln
cls := FindClass('
TExtendedObjekt');
// Objekt-Instanz erzeugen
obj := TBaseObjectClass(
cls ).Create();
// Test-Ausgabe
ShowMessage(TExtendedObjekt(obj).strName);
// Die Ausgabe sollte dann Base sein
end;
Das Baseobjekt stellt bei mir eine eigene Classroot dar von der ich alles ableite. Ich weiss lediglich mittels eines Strings, hier TExtendedObject' welches Object ich erzeugen muss/will. Also kann ich mich nur auf den allgemeinen kleinsten Nenner, die TBaseObject, beziehen. Das erstellte Objekt ist auch vom Typ TExtendedObject. Jedoch eben nicht mit den für dieses Object initialisierten Werten, sondern denen der Basisklasse.
Hoffe konnte verständlich machen um was es mir geht und hoffe auf Hilfe.
Liebe Grüsse Pascal