Attributes v Delphi 2010

vložil Radek Červinka 19. dubna 2011 00:00

V Delphi 2010 přibyla možnost používat atributy v kódu. Jedná se o podobný mechanismus jako je i v .NET a tento mechanismus otevírá celkem velké možnosti.

Tento mechanismus umožňuje označit část kódu (např. třída, proměnná, metoda…) určitým způsobem a za běhu s ním pracovat. Základem pro toto označování je třída TCustomAttribute.

Pokud tedy potřebujeme něco specifikovat, tak vytvoříme následníka této třídy a v kódu ho následně použijeme.

    1TAttrID = class(TCustomAttribute)
    2  private
    3    FID: Integer;
    4  public
    5    constructor Create(iId:Integer);
    6    property ID:Integer read FID write FID;
    7  end;
    8
    9příklad:
   10  [TAttrID(1)]
   11  TMyClass = class
   12  protected
   13    [TAttrID(2)]
   14    FName: string;
   15  public
   16    [TAttrID(3)]
   17    procedure Print;
   18    [TAttrID(4)]
   19    property Name:string read FName write FName;
   20  end;

V ukázce byl deklarován typ atributu TAttrID, který má jeden parametr (viz. constructor). Následně je na několika místech použit.

    1[TAttrID(293455)]
    2  [TAttrID(22)] // double attr
    3  TMyRecord = record
    4    Name:string;
    5    public procedure Print;
    6  end;
    7
    8
    9const
   10  IDENT_REC = 2334;
   11var
   12  [TAttrID(IDENT_REC)]
   13  rec:TMyRecord;

Lze specifikovat i více atributů a označit lze prakticky všechno.

Za běhu lze přistupovat přes RTTI např. takto:

    1uses
    2  Rtti;
    3….
    4
    5var
    6  c : TRttiContext;
    7  t : TRttiType;
    8  a : TCustomAttribute;
    9
   10begin
   11 c := TRttiContext.Create;
   12 try
   13   t := c.GetType(TMyClass);
   14   for a in  t.GetAttributes do
   15   begin
   16     Writeln((a as TAttrID).ID);
   17   end;
   18 finally
   19   c.Free
   20 end;

Na co to použít? Většina lidí to používá na některou formu persistence - tj. uložení objektu někam a pak ho znovu načíst. Např. se dá specifikovat u jednotlivých polí objektu sloupce DB. Myslím, že se to používá i v DataSnap a jinde.

Různé možnosti použití viz. tindex.net/Attributes.html, např. XML serializace.

Původně jsem o tom ani nechtěl psát, jelikož to reálně nepoužívám, ale chtěl jsem aby byl popis novinek v Delphi (aspoň v hlavních věcech skoro) kompletní. Třeba to někoho inspiruje.


Nabízíme Delphi školení a konzultace na různá témata, primárně ve Vaší firmě.

Tagy: ,

Novinky v Delphi

Komentování ukončeno

Naše nabídka

Partial English version.

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy nebo burzy práce).

Pokud chcete podpořit tento server libovolnou částkou, můžete použít PayPal. Moc děkuji.

Delphi Certified Developer

O Delphi.cz

Delphi je jediný moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64 , Mac OSX a na iPhone a Android (s výhledem na další platformy díky FireMonkey) na současném trhu (včetně Windows 8.1).

V současnosti je světová komunita přes dva miliónů vývojářů.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Anketa

Poslední komentáře

Comment RSS