以下代码抛出此异常的原因是什么:"表达式必须是MethodCallExpression.我认为调用Action是那个..
Action startBouncePolling = new Action(async () =>
{
});
BackgroundJob.Enqueue(() => startBouncePolling());
Run Code Online (Sandbox Code Playgroud)
入队的签名是一个参数 Expression<Action>
当你打电话时startBouncePolling(),你不是在调用方法.startBouncePolling不是方法,它是代表.所以你实际上正在调用一个委托.
因此,lambda表达式的主体() => startBouncePolling()最终是a InvocationExpression,而不是a MethodCallExpression.
如果您使用方法而不是委托,例如:
public async Task StartBouncePolling()
{
}
...
BackgroundJob.Enqueue(() => StartBouncePolling());
Run Code Online (Sandbox Code Playgroud)
然后身体会是一个MethodCallExpression.