Histórico da Página
...
Pagetitle | ||||
---|---|---|---|---|
|
Retorna um array com o nome de todas as classes que tem uma determinada annotationEfetua a pesquisa de uma Annotation a partir de um namespace e retorna um array contendo as informações de onde a Annotation foi encontrada.
Sintaxe
Bloco de código | ||
---|---|---|
| ||
Reflection.getClassesByAnnotation( cAnnotationName,[cClassNameFilter]cNamespaceFilter) ) |
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência | ||
---|---|---|---|---|---|---|
cAnnotationName | caractere | Indica o nome da annotation Annotation que será procurada em todas as pesquisada nas classes que estão compiladas no repositório | X | |||
cClassNameFiltercNamespaceFilter | caractere | Indica uma expressão regular para os nomes das classes | Nome do namespace onde deve ser procurada a Annotation. Obs.: Aqui pode ser feito o uso do caractere * para fazer a busca no namespace | XX |
Retorno
Nome | Tipo | Descrição |
---|---|---|
aRet | Array | Retorna um array com o nome de todas as classes que tem uma determinada annotation. |
...
Array com o resultado da busca pela Annotation.
|
Exemplo:
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
//Definicoes das annotation, deve estar num fonte* Programa test_doc_resourceGetClassesByAnnotation1.tlpp */ #include "msobjecttlpp-core.chth" @interfacenamespace AnnotationExemploresourceClassesbyAnnotation @annotation AnnotationResource nickname as char @end namespace exemplo @AnnotationExemplo@AnnotationResource(nickname = "MeuObject") class Obj1'Resource1') Class resourceClassesbyAnnotation1 Public public method new()data data1 Public Method New() EndClass @JsonField(nickname = "10") class Obj2 public method new() EndClass method new() class Obj2 return self method new() class Obj1 return self Main Function Exemplo() Method New() class resourceClassesbyAnnotation1 Return Self |
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
/*
Programa test_doc_resourceGetClassesByAnnotation2.tlpp
*/
#include "tlpp-core.th"
namespace resourceClassesbyAnnotation
@annotation AnnotationResource
nickname as char
@end
@AnnotationResource(nickname='Resource2')
Class resourceClassesbyAnnotation2
Public data data1
Public Method New()
EndClass
Method New() class resourceClassesbyAnnotation2
Return Self |
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#include "tlpp-core.th" Function u_testGetClassesByAnnotation() Local aRet as array aRetretVar := Reflection.getClassesByAnnotation("AnnotationExemplo", "exemplo.*") //procura por todas as classes do namespace exemplo'AnnotationResource',"resourceClassesbyAnnotation*") if(valType(aRet) <> "U") .and. (valType(aRet) == "A" .and. len(aRet) > 0) conout(aRet[1]:cClassName) conout(aRet[1]:cProgramName) varinfo("retVar", retVar)conout(aRet[2]:cClassName) conout(aRet[2]:cProgramName) else Return cJsonconout('Não foi encontrada nenhuma informação de Annotation com os padrões declarados') endif Return |
Resultado do Exemplo
retVar -> ARRAY ( 2) [...]
retVar[1] -> C ( 12) [EXEMPLO.OBJ1]
retVar[2] -> C ( 12) [EXEMPLO.OBJ2]RESOURCECLASSESBYANNOTATION.RESOURCECLASSESBYANNOTATION1
TEST_DOC_RESOURCEGETCLASSESBYANNOTATION1.TLPP
RESOURCECLASSESBYANNOTATION.RESOURCECLASSESBYANNOTATION2
TEST_DOC_RESOURCEGETCLASSESBYANNOTATION2.TLPP
Abrangência
17.3.0.3