Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: dynamisch Klassenkonstruktor aufrufen

  Alt 25. Jul 2014, 07:06
Dafür bietet Delphi Klassenreferenzen an:

Delphi-Quellcode:
type
  TPet = class
    constructor Create(const name: string); virtual;
  end;
  TPetClass = class of TPet;
  
  TDog = class(TPet);
  TCat = class(TPet);
  TParrot = class(TPet);

function CreateNewPet(petClass: TPetClass; const name: string): TPet;
begin
  Result := petClass.Create(name);
end;

...

var
  myDog: TDog;
  myParrot: TParrot;
begin
  myDog := CreateNewPet(TDog, 'Rex') as TDog;
  myParrot := CreateNewPet(TParrot, 'Polly') as TParrot;
Wenn das noch dynamischer gehen soll und es Klassen aus unterschiedlichen Vererbungshierarchien mit unterschiedlichen Parametern beim Konstruktor sind, dann bleibt noch die erweiterte RTTI (ab Delphi 2010).
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (25. Jul 2014 um 07:37 Uhr)
  Mit Zitat antworten Zitat