Reflection

25/01/2006 - 16:50 por Arkhanne | Informe spam
Hola,

Quiero ejecutar un método de otra clase mediante el nombre del método. El
método en cuestión tiene dos parámetros: el primero ByRef y el segundo ByVal.
Si el primero lo pongo ByVal me funciona bien, pero necesito que sea ByRef y
no condigo hacerlo. El código es el siguiente, pero el GetMethod siempre
devuelve Nothing. No se qué hago mal. ¿Alguien me puede ayudar?


Dim myType As Type = GetType(BaseDatosSI)
Dim myMethod As Reflection.MethodInfo
Dim param(1) As Type
Dim mods As Reflection.ParameterModifier() = New
Reflection.ParameterModifier(1) {New Reflection.ParameterModifier(1), New
Reflection.ParameterModifier(1)}

mods(0)(0) = True

param(0) = GetType(System.Object)
param(1) = GetType(System.Boolean)

For Each tabla As DataRow In _dtTablas.Rows
myMethod = myType.GetMethod(tabla("metodo"), param, mods)
myMethod.Invoke(Nothing, New Object() {_baseDatos,
tabla("reindexar")})
Next

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
25/01/2006 - 20:55 | Informe spam
Usa param(0) = Type.GetType("System.Object&") para obtener el tipo del
primer parametro (el & indica que es ByRef). Pero por lo que veo, no hay
necesidad de que el parametro sea ByRef (o si?).

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#2 Arkhanne
26/01/2006 - 08:17 | Informe spam
Hola,

Creo que eso ya lo probé y no funcinaba, pero no estoy seguro. De todas
formas lo he solucionado así:

Dim myType As Type = GetType(BaseDatosSI)

For Each tabla As DataRow In _dtTablas.Rows
myType.InvokeMember(tabla("metodo"),
Reflection.BindingFlags.InvokeMethod, Nothing, Nothing, New Object()
{_baseDatos, tabla("reindexar")})
Next

No he comprobado todavía si el parámetro _baseDatos se está pasando ByRef,
supongo que sí. Sobre si es necesario que sea ByRef o no, sí que lo es, ya
que el método necesita leer datos de ese parámetro y modificarlos para
utilizarlos posteriormente.


"Eduardo A. Morcillo [MS MVP VB]" escribió:

Usa param(0) = Type.GetType("System.Object&") para obtener el tipo del
primer parametro (el & indica que es ByRef). Pero por lo que veo, no hay
necesidad de que el parametro sea ByRef (o si?).

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C



Respuesta Responder a este mensaje
#3 Eduardo A. Morcillo [MS MVP VB]
26/01/2006 - 15:01 | Informe spam
Sobre si es necesario que sea ByRef o no, sí
que lo es, ya que el método necesita leer datos de ese parámetro y
modificarlos para utilizarlos posteriormente.



¿Con modificarlos quieres decir el metodo tiene que cambiar el contenido de
la variable que se le pasa como parametro? Porque si lo que necesitas es
modificar propiedades no es necesario que se pase ByRef la referencia al
objeto.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida