none
MethodInfo.Invoke con parámetros por referencias RRS feed

  • Pregunta

  • Hola a todos.

    A través de reflexión estoy invocando el método de una clase con dos parámetros:

    Type objType = Type.GetType(miClase);
    object csActiva = Activator.CreateInstance(objType);
    MethodInfo miMetodo = objType.GetMethod("GetDatos");
    miMetodo.Invoke(csActiva, new object[] {param1, param2});

    Con este código me funciona perfectamente, pero necesitaría enviar el param2 como referencia.

    ¿Como se enviaría el parámetro por referencia?

    Muchas gracias por vuestra ayuda.


    No aprendemos gracias a la escuela sino gracias a los foros ;-) (la original es de Séneca y en lugar de foros es vida)

    martes, 5 de mayo de 2020 10:07

Respuestas

  • Puedes hacer algo como esto, crear un delegado (asumo que tu método GetDatos posee dos paramteros de tipo int uno enviado como ref

    private delegate void TestDelegate(int param1, ref int param2);

    object csActiva = Activator.CreateInstance(objType);

    MethodInfo miMetodo = objType.GetMethod("GetDatos");

    TestDelegate td = (TestDelegate) Delegate.CreateDelegate(typeof(TestDelegate), csActiva, miMetodo);

    td.Invoke(param1m, ref param2);


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Marcado como respuesta ravipe martes, 5 de mayo de 2020 12:12
    martes, 5 de mayo de 2020 11:21
    Moderador

Todas las respuestas

  • Puedes hacer algo como esto, crear un delegado (asumo que tu método GetDatos posee dos paramteros de tipo int uno enviado como ref

    private delegate void TestDelegate(int param1, ref int param2);

    object csActiva = Activator.CreateInstance(objType);

    MethodInfo miMetodo = objType.GetMethod("GetDatos");

    TestDelegate td = (TestDelegate) Delegate.CreateDelegate(typeof(TestDelegate), csActiva, miMetodo);

    td.Invoke(param1m, ref param2);


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Marcado como respuesta ravipe martes, 5 de mayo de 2020 12:12
    martes, 5 de mayo de 2020 11:21
    Moderador
  • Muchas gracias Sergio, funciona perfectamente...


    No aprendemos gracias a la escuela sino gracias a los foros ;-) (la original es de Séneca y en lugar de foros es vida)

    martes, 5 de mayo de 2020 12:12
  • Hola

     

     

    Gracias por levantar tu consulta en los foros de MSDN. Cerraremos el Hilo, por ende si tiene alguna otra consulta por favor genera otra consulta para que la comunidad de foros te pueda asesorar.

     

    Siempre es un placer atender tus consultas!

     

    Gracias por usar los foros de MSDN.

     

    Oscar Navarro

    martes, 5 de mayo de 2020 12:53
    Moderador