Attribute und RTTI

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Attribute - Index


Stellt das Konzept von Attributen, ihre allgemeine Verwendung und einige grundlegende Einschränkungen bei Attributen in Delphi vor.

Hinweis: Delphi-Attribute werden in C++Builder nicht unterstützt. Für Informationen zur RTTI in C++Builder, siehe Delphi-RTTI und C++Builder.

Einführung

Attribute sind ein Sprach-Feature in Delphi, das die Annotation von Typen und Typ-Membern durch spezielle Objekte ermöglicht, die zusätzliche Informationen beinhalten. Diese Informationen können zur Laufzeit abgefragt werden. Attribute erweitern das normale objektorientierte Modell um aspektorientierte Elemente.

In der Regel sind Attribute beim Erstellen von allgemeinen Frameworks nützlich, die strukturierte Typen, wie Objekte oder Records, zur Laufzeit analysieren und neues Verhalten auf der Basis von weiteren, durch die Annotations-Attribute bereitgestellten Informationen einführen.

Attribute und RTTI

Attribute an sich ändern das Verhalten von Typen oder Membern nicht. Der Anwendungscode muss ausdrücklich das Vorhandensein von Attributen abfragen und bei Bedarf entsprechende Aktionen ausführen. Um ein Attribut einer Entität in der compilierten Binärdatei beifügen zu können, müssen zuerst für diese Entität RTTI-Informationen ausgegeben werden. Das bedeutet, dass Typen, die RTTI-Informationen explizit deaktivieren, für die Attributannotation nicht geeignet sind. In dem folgenden Quelltext wird SomeCustomAttribute beispielsweise nicht in die compilierte Binärdatei ausgegeben, weil die RTTI-Informationen für die Klasse TDerivedObject ausdrücklich deaktiviert sind.

type
  {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
  TDerivedObject = class(TObject)
    [SomeCustomAttribute()]
    procedure Shoot;
  end;

Themen

Siehe auch