以下代码抛出此异常的原因是什么?" Expression必须是MethodCallExpression。我认为召唤行动就是......
Action startBouncePolling = new Action(async () =>
{
});
BackgroundJob.Enqueue(() => startBouncePolling());
Enqueue的签名是Expression<Action>
答案 0 :(得分:6)
当您致电startBouncePolling()
时,您不会调用方法。 startBouncePolling
不是方法,而是委托。所以你实际上是调用委托。
因此,lambda表达式() => startBouncePolling()
的正文最终是InvocationExpression
,而不是MethodCallExpression
。
如果您使用方法而不是委托,例如:
public async Task StartBouncePolling()
{
}
...
BackgroundJob.Enqueue(() => StartBouncePolling());
然后身体将是MethodCallExpression
。