Autor Téma: Jaký je význam default atributů? (DefaultAttribute, default)  (Přečteno 1190 krát)

Offline Adam Lipovský

  • Nováček
  • *
  • Příspěvků: 4
  • Karma: 2
    • Verze Delphi: 10.2
Excellent
Rated 1 time
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č?

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3559
  • Karma: 112
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Jaký je význam default atributů? (DefaultAttribute, default)
« Odpověď #1 kdy: 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).
Embarcadero MVP - Czech republic

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3534
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Jaký je význam default atributů? (DefaultAttribute, default)
« Odpověď #2 kdy: 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.