Reflection, Получить возвращаемое значение из метода - PullRequest
1 голос
/ 23 марта 2011

Как мы можем выполнить метод и получить возвращаемое значение из Reflection.

Type serviceType = Type.GetType("class", true);
var service = Activator.CreateInstance(serviceType);
serviceType.InvokeMember("GetAll", BindingFlags.InvokeMethod, Type.DefaultBinder, service, null);

Ответы [ 4 ]

4 голосов
/ 23 марта 2011

Я не уверен, интересует ли вас возвращаемое значение или тип возвращаемого значения.На оба ответа отвечает код ниже, где я пытаюсь выполнить метод sum и получить значение, а также тип возвращаемого значения:

class Program
{
    static void Main(string[] args)
    {
        var svc = Activator.CreateInstance(typeof(Util));
        Object ret = typeof(Util).InvokeMember("sum", BindingFlags.InvokeMethod, Type.DefaultBinder, svc, new Object[] { 1, 2 });
        Type t = ret.GetType();

        Console.WriteLine("Return Value: " + ret);
        Console.WriteLine("Return Type: " + t);
    }
}

class Util
{
    public int sum(int a, int b)
    {
        return a + b;
    }
}
1 голос
/ 23 марта 2011

приведите результат InvokeMember к типу, фактически возвращенному вызовом метода.

1 голос
/ 23 марта 2011

http://msdn.microsoft.com/en-us/library/de3dhzwy.aspx

"Возвращаемое значение

Тип: System.Object

Объект, представляющий возвращаемое значение вызванного члена. "

0 голосов
/ 23 марта 2011

Вы можете попробовать что-то вроде этого:

ConstructorInfo constructor = Type.GetType("class", true).GetConstructor(Type.EmptyTypes);
object classObject = constructor.Invoke(new object[]{});

MethodInfo methodInfo = Type.GetType("class", true).GetMethod("GetAll");
object returnValue = methodInfo.Invoke(classObject , new object[] { });

Я не скомпилировал его, но он должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...