为了账号安全,请及时绑定邮箱和手机立即绑定

如何通过C#中的Task调用反射方法?

如何通过C#中的Task调用反射方法?

C#
largeQ 2021-05-05 17:27:39
我有一些C#代码正在使用反射运行某些方法。该代码如下所示:MyClass myClass = InitializeMyClass();string[] methods = GetMethodsToRun();foreach (var method in methods){  MethodInfo m = myClass.GetType().GetMethod(method);  m.Invoke(myClass, null);  }此代码有效。但是,我需要并行运行这些方法。因此,我一直在研究任务并行库。为了通过任务并行库并行运行方法,我需要Task为每个方法创建实例。为了做到这一点,我将上面的代码更新为:MyClass myClass = InitializeMyClass();string[] methods = GetMethodsToRun();foreach (var method in methods){  MethodInfo m = myClass.GetType().GetMethod(method);  Task<object> task = Task.Run<object>(method.Invoke(myClass, null));}但是,这是行不通的,因为method.Inkove返回一个object。我认为通过使用.Run<object>它可以传达我要运行的代码的返回类型。不过,我仍然收到一个编译时错误消息:参数1:无法从“对象”转换为“ System.Func”突然之间,我觉得我很难过。我的问题是,如何通过C#将反映的方法作为Task调用?
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 359 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信