Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Vererbung von Attributen von Klassen (https://www.delphipraxis.net/206626-vererbung-von-attributen-von-klassen.html)

freimatz 13. Jan 2021 16:31


Vererbung von Attributen von Klassen
 
Vererben sich Attribute einer Klasse? Angebenommen ich habe:

Delphi-Quellcode:
type
  [BlaAttribute]
  TBlub1 = class
  end;

  TBlub2 = class(TBlub1)
  end;
Wenn man nun Attribute abfragt, hat TBlub2 dann auch das BlaAttribute?
Mit googeln habe ich leider nichts gefunden. Ein Versuch sagt nein.

himitsu 13. Jan 2021 17:01

AW: Vererbung von Attributen von Klassen
 
Sie werden nicht vererbt.

Aber über die ParentClass kommst auf TBlub1 und dort siehst dann dein Attribut.
Das Selbe betrifft auch Methoden (Override) und Property.


Natürlich wäre es bestimmt zu praktisch, wenn man bei Abfrage von Attributen angeben könnte, dass die RTTI-Klassen solche Abhängigkeiten auflösen sollen, also man setzt z.B. einen Recursive-Parameter auf True und bekommt als Ergebnis auch die Dinge des der Vorfahren mit geliefert/angehängt.

freimatz 13. Jan 2021 17:06

AW: Vererbung von Attributen von Klassen
 
Dann müsste ich also meine Abfrage erweitern. Versuche ich mal. Danke.

Stevie 13. Jan 2021 19:32

AW: Vererbung von Attributen von Klassen
 
Du musst über TRttiType.BaseType die Hierarchie nach oben durchlaufen und die Attribute zusammen sammeln.
Falls du Spring4D einsetzt, kannst du Spring.Reflection nutzen, dort gibt es entsprechende Methoden, die das für dich erledigen.

freimatz 14. Jan 2021 11:13

AW: Vererbung von Attributen von Klassen
 
Super, das mit BaseType funktioniert. Ich brauch eh nur eine Stufe.
Spring.Reflection habe ich kurz angeschaut, werde das wohl nicht weiter verfolgen. Ich komme mit der Doku nicht klar.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf