Présentation des attributs

De Appmethod Topics
Aller à : navigation, rechercher

Remonter à Attributs - Index

Introduit le concept des attributs, leur cas d'utilisation général et certaines de leurs restrictions de base dans le langage Object Pascal.

Remarque : Les attributs Object Pascal ne sont pas supportés dans Appmethod C++. Pour plus d'informations sur RTTI dans Appmethod C++, voir Identification RTTI de Object Pascal et Appmethod C++.

Introduction

Les attributs représentent une fonctionnalité du langage Object Pascal qui permet l'annotation des types et des membres de types avec des objets spéciaux qui transportent des informations supplémentaires. Ces informations peuvent être interrogées à l'exécution. Les attributs étendent le modèle orienté objet normal avec des éléments orientés aspect.

En général, les attributs sont utiles lors de la construction de frameworks à usage général qui analysent des types structurés tels que les objets ou les enregistrements à l'exécution et introduisent un nouveau comportement basé sur des informations supplémentaires fournies par les attributs annotés.

Attributs et RTTI

Les attributs ne modifient pas le comportement des types ou des membres par eux-mêmes. Le code consommateur doit interroger de façon spécifique leur existence et prendre les actions appropriées quand cela est nécessaire. Pour être en mesure d'attacher un attribut à une entité dans le binaire compilé, vous devez d'abord obtenir les informations RTTI émises pour cette entité. Cela signifie que les types qui désactivent de manière explicite les informations RTTI n'acceptent pas l'annotation d'attributs. Par exemple, dans le code suivant, SomeCustomAttribute ne sera pas émis au binaire compilé, car les informations RTTI sont désactivées spécifiquement pour la classe TDerivedObject.

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

Rubriques

Voir aussi