要将Hangfire与F#结合使用,我需要一点帮助:
Hangfire的BackgroundJob.Enqueue
将System.Linq.Expressions.Expression
作为参数,其类型为Action<'T>
。
在我身边,我有办法处理:
let doSomething () = ()
因此它的签名是unit -> unit
。
如果被叫方采用Action(doSomething)
,但如果被调用者Action
,则如何完全传入unit -> unit
。
那么如何将Expression<Action<'T>>
转换为-1, -1, -2, -3, -5, -8, -13, -21, -34, ...
f(6) = 21
?
答案 0 :(得分:4)
正如kvb在评论中所说,F#支持将lambda转换为Expression
,就像C#一样。因此,如果您想创建一个忽略其输入并调用doSomething
的表达式,那么它只是:
BackgroundJob.Enqueue(fun x -> doSomething())