Einzelnen Beitrag anzeigen

Schokohase
(Gast)

n/a Beiträge
 
#2

AW: Instanz Klasse einfach weg

  Alt 5. Feb 2019, 12:25
Ja, das ist so.

Du kannst das wie folgt umgehen:
Delphi-Quellcode:
//weiter:
procedure TBlub.Initialize(); //override
begin
  DoInitialize(Self);
end;

procedure TBlub.DoInitialize(const blb: IBlub2);
begin
  Self.Egal := irgeeinservice.CreateEtwas(blbl);
end;
oder alternativ
Delphi-Quellcode:
//weiter:
procedure TBlub.Initialize(); //override
var blbl: IBlub2;
begin
  blb := Self as IBlub2; //Hier erhöht sich der Referenzzähler
  Self.Egal := irgeeinservice.CreateEtwas(blbl);
  blbl := Nil; //Hier erniedrigt sich der Referenzzähler
end;

procedure TBlub.AfterConstruction();//override
begin
  // Call AfterConstruction of base class
  inherited; //Da drin geht der Referenzzähler auf 0

  // Initialize member of descendant class
  //self.Initialize();

  //...
end;

constructor TBlub.Create;
begin
  inherited;
  Self.Initialize();
end;
Was dein Kollege meint ist schon richtig, du machst es aber nicht richtiger, wenn du den Code nur in anderen Methoden verlagerst und diese trotzdem im Rahmen des Konstruktors ausführst. Dadurch wird der Konstruktor der Klasse selber nicht schlanker, denn der Code wird ja trotzdem ausgeführt. Es ist einfach nur Augenwischerei.

Geändert von Schokohase ( 5. Feb 2019 um 12:31 Uhr)
  Mit Zitat antworten Zitat