Damit der richtige Konstruktor aufgerufen wird, muss dieser
virtuell sein.
Zusätzlich braucht man aber auch einen Klassenreferenztyp (class of).
Delphi-Quellcode:
unit ServiceStarter;
type
TServiceClass =
class of TServiceInterface;
constructor TServiceStarter.Create(service: TServiceClass;
var obj: TServiceInterface)
begin
while ...
do
// für jeden Thread eine Instanz
begin
service := service.Create;
end;
end;
srvStarter: TServiceStarter;
service1: TService1;
// TService1 ist von TServiceInterface abgeleitet!!
//...
srvStarter := TServiceStarter.Create(TService1, service1);