以下代码引发此异常的原因是什么:“表达式必须是MethodCallExpression。我认为调用Action就是那样。”

     Action startBouncePolling = new Action(async () =>
    {

    });

    BackgroundJob.Enqueue(() => startBouncePolling());


入队签名是Expression<Action>的一个参数

最佳答案

调用startBouncePolling()时,不是在调用方法。 startBouncePolling不是方法,它是委托。因此,您实际上是在调用委托。

因此,lambda表达式() => startBouncePolling()的主体最终是InvocationExpression,而不是MethodCallExpression

例如,如果使用方法而不是委托,则:

public async Task StartBouncePolling()
{
}
...
BackgroundJob.Enqueue(() => StartBouncePolling());


那么主体将是MethodCallExpression

08-26 09:21