Forum Delphi.cz

Delphi => Obecné => Téma založeno: Adam Lipovský 26-10-2018, 10:39:03

Název: Jaký je význam default atributů? (DefaultAttribute, default)
Přispěvatel: Adam Lipovský 26-10-2018, 10:39:03
Ahoj,

procházím Data.DB (Delphi 10.2.3) a všude jsou zde atributy Default() očividně kopírující default direktivy properties:

Kód: Delphi [Vybrat]
  1. published
  2.     property EditMask;
  3.     [Default(False)]
  4.     property FixedChar: Boolean read FFixedChar write FFixedChar default False;
  5.     [Default(20)]
  6.     property Size default 20;
  7.  

Otázka: k čemu je to dobré?

Googlil jsem a nenašel k tomu vůbec nic. Zdroják říká, že jde o DefaultAttribute a při troše hledání narazíme na využití v System.Classes funkci IsDefaultPropertyValue() kterou využívá TWriter. Zjevně to opravdu simuluje původní direktivu default. Proč?
Název: Re:Jaký je význam default atributů? (DefaultAttribute, default)
Přispěvatel: Radek Červinka 26-10-2018, 12:12:14
První co mne napadá, že díky atributům si to můžeš zjistit relativně jednoduše pomocí RTTI za běhu, tudíž evidentně k něčemu jako serializace.

IsDefaultPropertyValue je IMHO pro podporu toho původního default (je napr. i v Delphi XE).
Název: Re:Jaký je význam default atributů? (DefaultAttribute, default)
Přispěvatel: pf1957 26-10-2018, 12:22:41
První co mne napadá, že díky atributům si to můžeš zjistit relativně jednoduše pomocí RTTI za běhu, tudíž evidentně k něčemu jako serializace.
Jj, myslim, ze to souvisi s decouplingem tj. IoC a DI (Dependency Injection), tj. pronikani technologii jako Spring(4D). A take si myslim, ze kdyby Delphi umel anotovat uz v dobe, kdy vznikaly properties, tak by nikdy u nich nevytvareli storage specifikatory (stored, default, nodefault), ale delalo by se to anotaci.