method.invoke抛出的值不能为null异常

时间:2018-07-24 08:21:40

标签: c# reflection task

我有这个代码。

MethodInfo method = obj.GetType().GetMethod("Run");
Task task = Task.Factory.StartNew((Action)method.Invoke(obj, null));

我可以确认obj和method有效。我看到函数Run也被调用了。但是运行方法完成后,出现以下异常:

Message = "Value cannot be null.\r\nParameter name: action"

由于函数Run不返回/不接受参数,我无法确定在此引用了哪个“ action”参数。如果有帮助,这是Run方法:

public void Run()
        {
            Console.WriteLine("I'm here");

        }

1 个答案:

答案 0 :(得分:0)

这不是您调用的参数,不能为null,它是Task.Factory.StartNew的参数。

只需:

Task.Run(() => method.Invoke(obj, null));