Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 6 Próxima »


O recurso de annotation foi liberado na versão 17.3.0.3 e o objetivo é possibilitar a declaração de metadados nas nossas classes, métodos e funções, isto é, as configurações deles podem ficar dentro do mesmo código fonte.

Definição da annotation, a sugestão é que ela seja colocada em CH que pode ser utilizado em vários fontes.

exemplo1.ch
@interface ExemploDeAnnotation 
    property1 as char
    property2 as numeric default 1
@end

Uso da annotation em definição de classe:

exemplo1.tlpp
@ExemploDeAnnotation(property1 = "MeuObject")
class meuObj
    public Data data1
    public method new()
EndClass

Uso da annotation em definição de método:

exemplo2.tlpp
class meuObj
    public Data data1
	@ExemploDeAnnotation(property1 = "MetodoNew")
    public method new()
EndClass

Uso da annotation em definição de propriedade:

exemplo3.tlpp
class meuObj
	@ExemploDeAnnotation(property1 = "PropertyData", property2 = 456)
    public Data data1
EndClass

Uso da annotation em definição de função:

exemplo4.tlpp
@ExemploDeAnnotation(property1 = "FunctionTeste", property2 = 123)
main Function teste()
	conout("annotationTest")
Return

Novas funções disponíveis para uso juntamente com o recurso de Annotation, as funções foram disponibilizadas dentro do namespace Reflection.

  • Reflection.isAnnotationObjectPresent(advplObject,cAnnotationName)
  • Reflection.getObjectAnnotation(advplObject,cAnnotationName)
  • Reflection.getDataAnnotation(advplObject,cData, cAnnotationName)
  • Reflection.isAnnotationDataPresent(advplObject,cData, cAnnotationName)
  • Reflection.isAnnotationFunctionPresent(cSourceName,cFunctionName,cAnnotationName)
  • Reflection.getFunctionAnnotation(cSourceName,cFunctionName,cAnnotationName)
  • Reflection.getClassesByAnnotation(cAnnotationName,[cClassNameFilter])
  • Reflection.getFunctionsByAnnotation(cAnnotationName,[cFuncNameFilter])
  • Reflection.getDeclaredFields(oAdvplObject)
  • Reflection.getDataValue(oObj,cFieldName)









  • Sem rótulos