Einzelnen Beitrag anzeigen

mjustin

Registriert seit: 14. Apr 2008
3.005 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Gleichnamige Eigenschaft in verschiedenen Klassen ansprechen

  Alt 12. Aug 2016, 13:10
Eine einfache OOP Lösung gibt es nicht - sobald man mit "is" arbeiten muss, hat man schon den goldenen Pfad verlassen.

Daher würde ich nicht versuchen, eine nicht vorhandene Basisklasse durch eher "kosmetische" Tricks im Sourcecode auszubügeln (class helper oder RTTI).

Eher würde ich explizit die verschiedenen Klassen auch mit verschiedenen Methoden behandeln, die dürfen in Delphi über overload ja auch gleiche Namen haben.

Delphi-Quellcode:
var
  lObject: TObject;
  Class1Obj: TClass_1;
  Class2Obj: TClass_2;
begin
  lObject := GetObject(ID); // Kann ein Verweis auf TClass_1 oder TClass_2 zurückgeben

  if assigned(lObject) then
  begin
    if lObject is TClass_1 then
    begin
      Class1Obj := lObject as TClass_1;
      DoSomethingWith(Class1Obj);
    end else if if lObject is TClass_2 then
    begin
      Class2Obj := lObject as TClass_2;
      DoSomethingWith(Class2Obj);
    end
  end;
end;

procedure DoSomethingWith(const Obj: TClass_1); overload;
begin
  ...
end;

procedure DoSomethingWith(const Obj: TClass_2); overload;
begin
  ...
end;
Michael Justin

Geändert von mjustin (12. Aug 2016 um 13:14 Uhr)
  Mit Zitat antworten Zitat