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.isAnnotationDataPresent(advplObject,cData, cAnnotationName)
- Reflection.getDataAnnotation(advplObject,cData, cAnnotationName)
- Reflection.isAnnotationFunctionPresent(cSourceName,cFunctionName,cAnnotationName)
- Reflection.getFunctionAnnotation(cSourceName,cFunctionName,cAnnotationName)
- Reflection.isAnnotationMethodPresent(advplObject, cMethodName,cAnnotationName)
- Reflection.getMethodAnnotation(advplObject,cMethodName,cAnnotationName)
- Reflection.getClassesByAnnotation(cAnnotationName,[cClassNameFilter])
- Reflection.getFunctionsByAnnotation(cAnnotationName,[cFuncNameFilter])
- Reflection.getDeclaredFields(oAdvplObject)
- Reflection.getDataValue(oObj,cFieldName)
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas