Reflection y llamada dinámica a método

26/03/2007 - 22:17 por Marianoh | Informe spam
Hola

Tengo una clase que llama a métodos a partir de un string con su
nombre utilizando InvokeMember, ahora, como las llamadas se repiten
muchas veces, quiero hacerlas de la manera más performante posible.

Si creo un methodinfo para cada llamada ¿es más rápido?

Agradezco comentarios u otra forma de hacerlo.

Gracias

Preguntas similare

Leer las respuestas

#6 Octavio Hernandez
27/03/2007 - 13:20 | Informe spam
Ya, pero comparado con el cuello de botella del
MethodInfo.InvokeMember creo que apenas se notaría.



Ah, pido disculpas (y a Mariano también), es que no leí bien la pregunta
original, ja, ja!
Tienes toda la razón, InvokeMember es costisísimo, porque contiene un lookup
para buscar el
nombre del método cada vez.
Si se crea un MethodInfo ya no hace falta llamar a Type.InvokeMember, en vez
de eso se puede
utilizar MethodInfo.Invoke() que ejecuta directamte el método.

Salu2 - Octavio
Respuesta Responder a este mensaje
#7 Alfredo Novoa
27/03/2007 - 13:44 | Informe spam
On Tue, 27 Mar 2007 13:20:52 +0200, "Octavio Hernandez"
wrote:

Si se crea un MethodInfo ya no hace falta llamar a Type.InvokeMember, en vez
de eso se puede
utilizar MethodInfo.Invoke() que ejecuta directamte el método.



Que sigue siendo muy costoso :)


Saludos
Respuesta Responder a este mensaje
#8 Octavio Hernandez
27/03/2007 - 14:26 | Informe spam
Que sigue siendo muy costoso :)



Sip.

Slds - Octavio
Respuesta Responder a este mensaje
#9 Marianoh
27/03/2007 - 20:08 | Informe spam
Bueno, Antes que nada muchas gracias por responder.

Comento un poco más lo que estoy haciendo a ver si alguien me da una
idea de cómo encararlo:

El módulo que quiero hacer se encarga de parsear y validar datos de
un txt, lo que hice es configurar los datos (nombre, tipo, información
necesaria para el parseo y nombre de los métodos que deben validarlo)
en un xml.

Estas definiciones de datos las cargo en una colección dentro de una
clase y, para cada registro de origen, itero por esta colección,
valido el dato y, según corresponda, lo envío a destino o logueo el
error de validación.

La idea principal es que no se detenga el proceso ante un error, sino
que continúe y devuelva un log de todas las fallas del origen.

En el XML puse los nombres de los métodos y sus parámetros y los
llamo por reflection. Bien, funciona. La pregunta viene porque
quisiera al final poder estresarlo con +/- 200.000 datos y que demore
un tiempo decente, pero sin perder la posibilidad de configurarlo
dinámicamente.

Aquí es donde veo que reflection hace agua y quisiera ver una manera
más rápida.

Sus opiniones de como lo harían a grandes rasgos son bienvenidas
Respuesta Responder a este mensaje
#10 Alfredo Novoa
27/03/2007 - 21:52 | Informe spam
On 27 Mar 2007 11:08:57 -0700, "Marianoh"
wrote:

Aquí es donde veo que reflection hace agua y quisiera ver una manera
más rápida.



No veo ninguna necesidad de usar la reflexión.¿Por que no pones un
switch y listo?

Saludos
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida