我们如何执行方法并从Reflection获取返回值。
Type serviceType = Type.GetType("class", true);
var service = Activator.CreateInstance(serviceType);
serviceType.InvokeMember("GetAll", BindingFlags.InvokeMethod, Type.DefaultBinder, service, null);
答案 0 :(得分:4)
我不确定您是否对返回值或返回类型感兴趣。 以下代码都回答了这两点,我尝试执行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 :(得分:1)
答案 2 :(得分:1)
将InvokeMember结果转换为方法调用实际返回的类型。
答案 3 :(得分:0)
您可以尝试这样的事情:
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[] { });
我没有编译它,但它应该可以工作。