Efetua a busca de Annotation em um método de um objeto e retorna uma lista com a posição de cada parâmetro onde a Annotation foi encontrada.
Sintaxe
Reflection.getMethodParmsByAnnotation( xParam, cMethodName, aListParms, cAnnotationName)
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência |
---|---|---|---|---|
xParam** | objeto/caractere** | Objeto instância da classe/nome da classe** proprietário/a** do método onde será procurada a Annotation. | X | |
cMethodName | caractere | Nome do método onde será procurada a Annotation. | X | |
aListParms | array | Lista de parâmetros com a posição onde a Annotation foi encontrada. | X | X |
cAnnotationName | caractere | Nome da Annotation a ser procurada. | X |
Implementação de comportamento
A partir do build 24.3.0.0, também haverá a opção de passar simplesmente o nome da classe em xParam, conforme exemplo 2. Mas continua valendo a passagem da instância do objeto (exemplo 1).
Retorno
Nome | Tipo | Descrição |
---|---|---|
lRet | lógico | Retorna .T. caso encontre algum parâmetro que contenha a Annotation, caso não encontre .F. |
aListParams | array | Array passada por referência na busca contendo em cada indicie a posição do parâmetro onde a Annotation foi encontrada. Caso não encontre, a array retorna vazia. |
Exemplos
#include "tlpp-core.th" @annotation AnnotationGetMethodParmsByAnnotation nickname as char @end Class GetMethodParmsByAnnotation Public Method New() Public Method ParmByAnnotation(@AnnotationGetMethodParmsByAnnotation("annotation parm1") parm1, @AnnotationGetMethodParmsByAnnotation("annotation parm2") parm2) EndClass Method New() class GetMethodParmsByAnnotation Return Self Function u_testGetMethodParmsByAnnotation() Local oObj := GetMethodParmsByAnnotation():New() Local lRet := .F. as logical Local aRet := {} as array lRet := Reflection.GetMethodParmsByAnnotation(oObj, "ParmByAnnotation", @aRet, "AnnotationGetMethodParmsByAnnotation") if lRet Conout(lRet) aEval(aRet,{|x| Conout(x)}) else Conout('Nao foi possivel encontrar nenhuma Annotation com os parametros informados') endIf Return
#include "tlpp-core.th" @annotation AnnotationGetMethodParmsByAnnotation nickname as char @end Class GetMethodParmsByAnnotation Public Method New() Public Method ParmByAnnotation(@AnnotationGetMethodParmsByAnnotation("annotation parm1") parm1, @AnnotationGetMethodParmsByAnnotation("annotation parm2") parm2) EndClass Method New() class GetMethodParmsByAnnotation Return Self Function u_testGetMethodParmsByAnnotation() Local lRet := .F. as logical Local aRet := {} as array lRet := Reflection.GetMethodParmsByAnnotation("GetMethodParmsByAnnotation", "ParmByAnnotation", @aRet, "AnnotationGetMethodParmsByAnnotation") if lRet Conout(lRet) aEval(aRet,{|x| Conout(x)}) else Conout('Nao foi possivel encontrar nenhuma Annotation com os parametros informados') endIf Return
Resultado dos Exemplos
.T.
1
2
Abrangência
17.3.0.3