Method reflection

3 respostas
under_fire

Pessoal eu me confrontei com o seguinte problema:
Eu preciso passar para um método uma referência de um outro método;

Mas a unica forma q eu consegui fazer isso foi utilizando reflection passando por todos os métodos e comparando o nome dos métodos
ou seja se eu quizer que esse metodo seja chamado dinamicamente eu tenho que infelizmente que passar o nome do método em string… que creio que isso seja chamado de gambia…

this.methodFazAlgumaCoisa(implementation, methodName);

Se alguem ja passou por isso… e quizer da uma mão agradeço flw

3 Respostas

ViniGodoy

Use uma interface, que contém a assinatura do método que você quer passar por referência.
Num futuro não muito distante, será possível usar closures para esse tipo de coisa, mas até então interfaces são a forma mais limpa de resolver o problema.

Eu realmente não aconselho reflection. Além do código ficar muito rebuscado, fica sujeito a erros e não existem verificações em compile time. Uma refatoração que mude o nome do método pode literalmente quebrar o seu sistema e só quem vai descobrir é o cliente.

fwbrasil

Você pode passar uma inner class que chama o método que você quer. É uma utilização parecida com closure.

under_fire

ViniGodoy:
Use uma interface, que contém a assinatura do método que você quer passar por referência.
Num futuro não muito distante, será possível usar closures para esse tipo de coisa, mas até então interfaces são a forma mais limpa de resolver o problema.

Eu realmente não aconselho reflection. Além do código ficar muito rebuscado, fica sujeito a erros e não existem verificações em compile time. Uma refatoração que mude o nome do método pode literalmente quebrar o seu sistema e só quem vai descobrir é o cliente.

Com interface tbm não:
por que a implementação que eu vou chamar o método dinâmicamente é de codigo gerado do apache cfx que faz a conexão com webservice… e são N métodos…
e eu estou utilizando reflection justamente para evitar que o futuro desenvolvedor tenha que se preocupar com questões de conexão, gerenciamento de sessao com servidor externo etc…

Criado 10 de março de 2009
Ultima resposta 10 de mar. de 2009
Respostas 3
Participantes 3