转换单位 - >单位行动

时间:2016-05-02 20:45:00

标签: linq f# linq-expressions hangfire

要将Hangfire与F#结合使用,我需要一点帮助:

Hangfire的BackgroundJob.EnqueueSystem.Linq.Expressions.Expression作为参数,其类型为Action<'T>

完全如此: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

1 个答案:

答案 0 :(得分:4)

正如kvb在评论中所说,F#支持将lambda转换为Expression,就像C#一样。因此,如果您想创建一个忽略其输入并调用doSomething的表达式,那么它只是:

BackgroundJob.Enqueue(fun x -> doSomething())