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

#11 Marianoh
27/03/2007 - 23:19 | Informe spam
On 27 mar, 16:52, Alfredo Novoa wrote:
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



Los métodos a los que llámo están en un proyecto separado que lo
único que contiene es una clase con todos esos métodos estáticos, pero
las llamadas se hacen desde otro proyecto mucho más importante y en el
que no trabajo yo solo y que incluye otros procesos con esos datos.

Como la fuente de datos depende de un organismo externo sobre el que
no tengo control, quiero que en el caso de que haya que incluir nuevos
métodos (debido a cambios en el formato de origen), me alcance con
pisar la dll con los métodos y editar el xml, sin tener que meter mano
donde, por otro lado, no tengo permiso.

Varios de los proyectos en los que estoy participando tiene este
tipo de entrada de datos y quiero una solución lo más desacoplada
posible, por eso estoy separando el ingreso de datos, la salida y las
validaciones.

Saludos
Respuesta Responder a este mensaje
#12 Octavio Hernandez
27/03/2007 - 23:25 | Informe spam
Mariano,

Si he entendido bien lo q quieres, me parece q coincido con Alfredo.
Pensé que lo hacías así para a posteriori poder agregar un nuevo tipo
sin tener que recompilar, pero ¡tienes que agregar al código el nuevo
método y recompilar de todos modos!

Slds - Octavio


"Marianoh" escribió en el mensaje
news:
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
#13 AE
28/03/2007 - 01:19 | Informe spam
En que casos, se recomiendo la Reflection, según parece utilizarla merma el
rendimiento considerablemente, no ??

Saludos.
Respuesta Responder a este mensaje
#14 Marianoh
28/03/2007 - 05:06 | Informe spam
mmm, Me parece que tiene razón.

La idea de usar reflection era que me permite hacer otras cosas como
especificar el assembly, pero en las pruebas que hice es
extremadamente más lento que llamar a un switch.

Gracias por las opiniones
Respuesta Responder a este mensaje
#15 Alfredo Novoa
28/03/2007 - 10:26 | Informe spam
On Tue, 27 Mar 2007 16:19:56 -0700, AE
wrote:

En que casos, se recomiendo la Reflection, según parece utilizarla merma el
rendimiento considerablemente, no ??



En realidad es útil en pocos casos. Te puede servir para crear
"plug-ins", escribir compiladores, lenguajes de script y ahora no se
me ocurren muchas más cosas.

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