Histórico da Página
...
Pagetitle | ||||
---|---|---|---|---|
|
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 | ||
---|---|---|
| ||
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 | caractere | Nome da annotation da Annotation a ser procurada | X |
Informações | ||
---|---|---|
| ||
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 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
//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 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#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
...