Weshalb der Umweg über
RTTI ?
Da die Basis-Klasse ja nun einen virtual Constructor enthält, geht es auch direkt via Class-Type:
Code:
Type
TVTDialogBase = Class(TInterfacedPersistent,IVTDialogCall)
private
protected
public
Constructor VirtualConstructor(); Virtual;
published
End;
TVTDialogBaseClass = Class Of TVTDialogBase;
TDialogItem = ...
AClass : TVTDialogBaseClass;
AInst : TVTDialogBase;
end;
// [..]
var
dm : TDialogItem;
Begin
dm.AInst := dm.AClass.VirtualConstructor();
end;