我可以使用Func <object [],object =“”>表示任何类型的参数输入和TResult?</object [],>

时间:2013-05-03 15:14:01

标签: c# .net delegates func

我可以使用通用委托Func来表示任何委托输入和结果吗? 如

public static int ProcessJob(Func<object[], object> function, params object[] args)

我按如下方式调用此函数:

Func<int, string> Test = TestFunction;
AsyncJobHelper.ProcessJob(Test, i);

VS2010对此给出了错误。

3 个答案:

答案 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需要一样多的参数。