我可以使用通用委托Func来表示任何委托输入和结果吗? 如
public static int ProcessJob(Func<object[], object> function, params object[] args)
我按如下方式调用此函数:
Func<int, string> Test = TestFunction;
AsyncJobHelper.ProcessJob(Test, i);
VS2010对此给出了错误。
答案 0 :(得分:2)
没有;你不能这样做。
相反,您可以让您的功能采用基础Delegate
课程并致电DynamicInvoke()
请注意,这会使用反射并且速度很慢。
答案 1 :(得分:2)
也许通用的ProcessJob就是你需要的
public static TResult ProcessJob<TInput,TResult>(Func<TInput[],TResult> function, params TInput[] args)
{
return function(args);
}
答案 2 :(得分:0)
我以另一种方式做到了:
public static T ProcessJob<T>(Func<T> function)
要调用,我使用lambda表达式实现该函数:
Func<string> Test = () => return TestFunction(Param1, Param2, Param3);
AsyncJobHelper.ProcessJob(Test);
请参阅? lambda表达式接受与TestFunction
需要一样多的参数。