Retorna uma instância da classe solicitada de maneira dinâmica.
Sintaxe
Reflection.getClassByClass( cName, [cClassNameFilter]) )
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência |
---|---|---|---|---|
cName | caractere | Indica o nome da classe que será instanciada, caso a mesma exista no no repositório. | X | |
cClassNameFilter | caractere | Indica uma expressão regular para os nomes das classes | X |
Retorno
Nome | Tipo | Descrição |
---|---|---|
oRet | Object | Instancia da classe solicita, caso a mesma exista no repositório. Caso contrário retorna NIL |
Exemplos
exemplo1.tlpp
//Definicoes das annotation, deve estar num fonte #include "msobject.ch" namespace exemplo.teste class Obj1 public data cTeste as char public method new() EndClass method new() class Obj1 cTeste := "instancia classe Obj1" return self class Obj2 public data cTeste as char public method new() EndClass method new() class Obj2 cTeste := "instancia classe Obj2" return self Main Function Exemplo() local cNome := "Obj" local oClass := Reflection.getClassByName( cNome + "1", "exemplo.teste") conout(oClass:cTeste) oClass := Reflection.getClassByName( cNome + "2", "exemplo.teste") conout(oClass:cTeste) oClass := Reflection.getClassByName( cNome + "Naoexiste", "exemplo.teste") if oClass == NIL conout("Instancia invalida") endif conout(oClass:cTeste) // Gera erro ao acessar "atributo de NIL" Return
Resultado do Exemplo
instancia classe Obj1
instancia classe Obj2
"Instancia invalida"
Abrangência
17.3.0.3
Veja também
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas