Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Pagetitle
Reflection.getMethodParmsByAnnotation
Reflection.getMethodParmsByAnnotation

Retorna se encontrou Efetua a busca de Annotation em qualquer parâmetro de um métodoum método de um objeto e retorna uma lista com a posição de cada parâmetro onde a Annotation foi encontrada.

Sintaxe

Bloco de código
collapsefalse
Reflection.getMethodParmsByAnnotation( oObjectxParam, cFunctionNamecMethodName, aListParms, cAnnotationName)

...

Nome

Tipo

Descrição

Obrigatório

Referência

oObjectxParam**

objeto/caractere**

Objeto instância da classe/nome da classe** proprietário/a** do método onde será procurada Indica o objeto onde está o método que será procurado a Annotation.

X


cPropertyNamecMethodName

caractere

Indica o nome Nome do método onde será procurada a Annotation.

X


aListParms
arrayRetorna a lista Lista de parâmetros que contém a AnnotationXcom a posição onde a Annotation foi encontrada.           X        X
cAnnotationName
caractereIndica o nome Nome da Annotation que será a  ser procurada.X           X
Informações
titleImplementaçã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 tenha contenha a Annotation e , caso não encontre .F. caso não tenha 

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

Bloco de código
languagecpp
themeEclipse
titleexemplo1.tlpp
linenumberstrue
@interface AnnotationExemplo
    NICKNAME #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

class MeuObjeto
    public data data1
    public method new()
    public method teste(@AnnotationExemplo("valorMethod 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
Bloco de código
languagecpp
themeEclipse
titleexemplo2.tlpp
linenumberstrue
#include "tlpp-core.th"


@annotation AnnotationGetMethodParmsByAnnotation
nickname as char
@end

Class GetMethodParmsByAnnotation

	Public Method New()
	Public Method ParmByAnnotation(@AnnotationGetMethodParmsByAnnotation("annotation parm1") parm1, @AnnotationExemplo@AnnotationGetMethodParmsByAnnotation("valorannotation parm2") parm2)
EndClass
 
 
main function usoDeAnnotationMethod New()
 class GetMethodParmsByAnnotation
Return  local oObj := MeuObjeto():New()
    local jRet
    jRetSelf

Function u_testGetMethodParmsByAnnotation()

	Local lRet := .F. as logical
	Local aRet := {} as array

	lRet := Reflection.getMethodParmsByAnnotationGetMethodParmsByAnnotation(oObj"GetMethodParmsByAnnotation", "testeParmByAnnotation", aRet@aRet, "AnnotationExemploAnnotationGetMethodParmsByAnnotation")
	if lRet
		Conout(lRet)
		aEval(aRet,{|x| Conout(x)})
	else
		Conout('Nao  conout(jRet) 
return

Resultado do Exemplo

valor parm1
foi possivel encontrar nenhuma Annotation com os parametros informados')
	endIf
Return

Resultado dos Exemplos

.T.

1

2

...

Abrangência

17.3.0.3

Veja também

...