Árvore de páginas

Carregando...

Versões comparadas

Chave

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

...

Pagetitle
Reflection.getMethodsObjectByAnnotation
Reflection.getMethodsObjectByAnnotation

Retorna um array com o objeto Method de cada um dos métodos que possuem a annotation no objeto enviadoEfetua busca da Annotation em um objeto e retorna uma array com o(s) método(s) onde a mesma foi encontrada.

Sintaxe

Bloco de código
collapsefalse
Reflection.getMethodsObjectByAnnotation( oObjxParam,cAnnotationName )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

xParam**

objet/caractere

Objeto instância da classe/nome da classe** onde a busca pela Annotation

oObj

objeto

Objeto na qual a busca será realizada

X


cAnnotationName 
caractereNome da annotation da Annotation a ser procuradaX
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

aRet

Array

Retorna um array com o os objetos Method.

...

Array contendo em cada posição um objeto Json com a propriedade cMethodName onde o valor é o método onde a Annotation  foi encontrada. Caso não haja resultado a array retorna vazia.

Exemplo

Bloco de código
languagecpp
themeEclipse
titleexemplo1.tlpp
linenumberstrue
//Definicoes das annotation, deve estar num fonte
#include "tlpp-objectcore.th"
  
  
@annotation metodoAnnotationGetMethodsObjectByAnnotation
@end

@annotationClass classeMetodoGetMethodsObjectByAnnotation
@end
	Public Method 
@classeMetodoNew()
Class NovaClasseMetodo
  
    Public Data TesteAttr
      
    @metodo
	@AnnotationGetMethodsObjectByAnnotation()
    	Public Method MetodoTesteMethodWithAnnotation()
EndClass
  
    Public Method New(str)
endclass
 class GetMethodsObjectByAnnotation
Return  Self

Method NewMethodWithAnnotation(str) class NovaClasseMetodoGetMethodsObjectByAnnotation
Return

Function u_testGetMethodsObjectByAnnotation()
	Local ObjMethod
	Local oObj

	oObj ::TesteAttr= := str
return self
  
Method MetodoTeste() class NovaClasseMetodo
    Conout("Instancia executadaGetMethodsObjectByAnnotation():New()

	ObjMethod := Reflection.getMethodsObjectByAnnotation(oObj, "AnnotationGetMethodsObjectByAnnotation")
	Conout("Nome do Metodo: " + ::TesteAttr)
return "Banana"
  
  
User Function testeMetodo()
    local ObjMethod
    local classes
    local obj1
      
    classes := Reflection.getClassesByAnnotation("classeMetodo", "") // vazio para pegar todas as classes do repositorio
      
    obj1 := classes[1]:CreateInstance("Instancia 1")
      
    ObjMethod[1]:cMethodName)

Return
Bloco de código
languagecpp
themeEclipse
titleexemplo2.tlpp
linenumberstrue
#include "tlpp-core.th"

@annotation AnnotationGetMethodsObjectByAnnotation
@end

Class GetMethodsObjectByAnnotation

	Public Method New()

	@AnnotationGetMethodsObjectByAnnotation()
	Public Method MethodWithAnnotation()
EndClass

Method New() class GetMethodsObjectByAnnotation
Return Self

Method MethodWithAnnotation() class GetMethodsObjectByAnnotation
Return

Function u_testGetMethodsObjectByAnnotation()
	Local ObjMethod
	Local oObj

	ObjMethod := Reflection.getMethodsObjectByAnnotation(obj1"GetMethodsObjectByAnnotation", "metodoAnnotationGetMethodsObjectByAnnotation")
    conout	Conout("Nome do Metodo: " + ObjMethod[1]:cMethodName)

return

Return

Resultado

...

dos Exemplos

Nome do Metodo: METODOTESTEMethodWithAnnotation

Abrangência

17.3.0.3

Veja também

...