Histórico da Página
Estado | ||||||
---|---|---|---|---|---|---|
|
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 Sugere-se que a definição da annotation , a sugestão é que ela seja colocada em um TH (TLPP Header File) para que pode possa ser utilizado utilizada em vários fontes.
Informações | ||
---|---|---|
| ||
|
Bloco de código | ||||
---|---|---|---|---|
| ||||
#include "tlpp-core.th"
@annotation ExemploDeAnnotation
property1 as char
property2 as numeric default 1
@end
|
Uso da annotation em definição de classe:
Bloco de código | ||||
---|---|---|---|---|
| ||||
#include "exemplo1.th"
@ExemploDeAnnotation(property1 = "MeuObject")
class meuObj
public Data data1
public method new()
EndClass
|
Uso da annotation em definição de método:
Bloco de código | ||||
---|---|---|---|---|
| ||||
#include "exemplo1.th"
class meuObj
public Data data1
@ExemploDeAnnotation(property1 = "MetodoNew")
public method new()
EndClass |
Uso da annotation em definição de propriedade:
Bloco de código | ||||
---|---|---|---|---|
| ||||
#include "exemplo1.th"
class meuObj
@ExemploDeAnnotation(property1 = "PropertyData", property2 = 456)
public Data data1
EndClass |
Uso da annotation em definição de função:
Bloco de código | ||||
---|---|---|---|---|
| ||||
#include "exemplo1.th"
@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)
- Reflection.isAnnottationFunctionParamPresent(cSourceName, cFunctionName, nParmPos, cAnnotationName)
- Reflection.getFunctionParamAnnotation(cSourceName, cFunctionName, nParmPos, cAnnotationName)
- Reflection.isAnnottationMethodParamPresent(oObject, cFunctionName, nParmPos, cAnnotationName)
- Reflection.getMethodParmAnnotation(oObject, cFunctionName, nParmPos, cAnnotationName)
- Reflection.getFunctionParmsByAnnotation(cSourceName, cFunctionName, aListParms, cAnnotationName)
- Reflection.getMethodParmsByAnnotation(oObject, cFunctionName, aListParms, cAnnotationName)
- Reflection.getProgramFunctionsByAnnotation(cProgramName, cAnnotationName)
...
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas