我可以有一个通用的委托 Func 来代表任何委托输入和结果吗?如
public static int ProcessJob(Func<object[], object> function, params object[] args)
我称这个函数如下:
Func<int, string> Test = TestFunction;
AsyncJobHelper.ProcessJob(Test, i);
VS2010 在这方面给了我错误。
不; 你不能那样做。
相反,您可以让您的函数采用基Delegate
类并调用DynamicInvoke()
.
请注意,这使用反射并且会很慢。
也许通用 ProcessJob 是你需要的
public static TResult ProcessJob<TInput,TResult>(Func<TInput[],TResult> function, params TInput[] args)
{
return function(args);
}
我以另一种方式做到了:
public static T ProcessJob<T>(Func<T> function)
为了调用,我使用 lambda 表达式来实例化该函数:
Func<string> Test = () => return TestFunction(Param1, Param2, Param3);
AsyncJobHelper.ProcessJob(Test);
看?lambda 表达式可以根据需要接受尽可能多的参数TestFunction
。