Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

Versão 1 Próxima »

Retorna um array com o nome de todos os métodos que possuem a annotation passada como argumento

Sintaxe

Reflection.getMethodsByAnnotation( oObj,cAnnotationName )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

oObj

objeto

Objeto na qual a busca será realizada

X


cAnnotationName 
caractereNome da annotation a ser procuradaX

Retorno

Nome

Tipo

Descrição

aRet

Array

Retorna um array com o nome de todos os métodos da classe que possuem esta annotation.

Exemplos

exemplo1.tlpp
#INCLUDE "MsObject.CH"

NAMESPACE TesteReflection
MAIN FUNCTION Teste()
  ClasseTeste():New()
RETURN

@annotation AnnotationMethod
    property1 as char
@end

@annotation AnnotationClass
    property1 as char
@end

@AnnotationClass("testeClass")
class ClasseUm

	public method New()

	@AnnotationMethod("testeMethod")
	public method testeMethod()

endclass

METHOD NEW() CLASS ClasseUm
return self

method testeMethod() CLASS ClasseUm
	conout("Teste de metodo")
return

CLASS ClasseTeste
  PUBLIC METHOD NEW()
ENDCLASS


METHOD NEW() CLASS ClasseTeste
  
  local classes := {}
  local methods := {}
  local instance
  
  // Pego todas as classes que possuem a annotation "AnnotationClass"
  classes := Reflection.getClassesByAnnotation("AnnotationClass", "TesteReflection.*")
  
  conout(classes[1])
  
  // Instancio um novo objeto desta classe
  instance :=  &(classes [1] + "():New()")
  
  // Pego todos os metodos dentro da classe que possuem a annotation "AnnotationMethod"
  methods := Reflection.getMethodsByAnnotation(instance, "AnnotationMethod")
  
  conout(methods[1])
  
  // Executo o metodo encontrado
  &("instance:" + methods[1] + "()")
  
RETURN self

Resultado do Exemplo

TESTEREFLECTION.CLASSEUM
TESTEMETHOD
Teste de metodo

Abrangência

17.3.0.3

Veja também

  • Sem rótulos