抱歉标题不好。我想在.NET 3.5中执行以下操作:
void Invoke(Action callback)
{
callback();
}
但我想知道是否有一些已经内置的类已经具备此功能。例如,如果我能做到以下几点,我会很高兴(但我知道我不能):
Action.Run(()=>{}}
我知道有很多解决这个问题的方法,比如编写我自己的帮助类或扩展。但正如我所说的那样,我想知道如果没有任何这种情况可以做到这一点。
澄清:
我想要这个解决方案,因为我有一个像这样的方法定义:
private void HelloWorld(Action callback)
{
#if DOTNET4.0+ //This code won't be compiled for DOTNET3.5
Action.Run(async ()=>{
await someTask;
callback();
});
#else //This code will be
callback();
#endif
}
我不想使用Task.Run(...)的原因是因为我想最小化依赖于.NET4.0 +的代码量。如果没有替代Task.Run(...),那么我将继续使用它。
答案 0 :(得分:1)
嗯,没有参数的void lambda可以这样调用:
((Action)(()=>{}))()
或
((Action)(()=>{})).Invoke()
在允许使用lambda之前,你总是需要为lambda指定一个类型(甚至是隐式)。