//Definicoes das annotation, deve estar num fonte
#include "tlpp-object.th"
@annotation classe
@end
@annotation attr
@end
@classe()
Class NovaClasse
@attr()
Public Data TesteAttr as char
Public Method MetodoTeste()
Public Method New(str)
endclass
Method New(str) class NovaClasse
::TesteAttr := str
return self
Method MetodoTeste() class NovaClasse
Conout(::TesteAttr)
return "Banana"
Main Function testeNovo()
local AttrA
local obj1 := NovaClasse():New("Instancia 1")
local obj2 := NovaClasse():New("Instancia 2")
Conout("-----------------------")
AttrA := Reflection.getAttributesByAnnotation(obj1, "attr")
Conout(AttrA[1]:GetValue(obj1))
AttrA[1]:Assign(obj1, "Banana1")
Conout(AttrA[1]:cAttributeName)
Conout(AttrA[1]:cAttributeType)
Conout(obj1:TesteAttr)
Conout("-----------------------")
Conout("-----------------------")
AttrA := Reflection.getAttributesByAnnotation(obj2, "attr")
Conout(AttrA[1]:GetValue(obj2))
AttrA[1]:Assign(obj2, "Banana2")
Conout(AttrA[1]:cAttributeName)
Conout(AttrA[1]:cAttributeType)
Conout(obj2:TesteAttr)
Conout("-----------------------")
return |