Árvore de páginas

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
caractereIndica 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

  • Sem rótulos