将单位->单位转换为动作

Sna*_*ake 3 linq f# linq-expressions hangfire

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

Hangfire的BackgroundJob.Enqueue参数为System.Linq.Expressions.Expression泛型类型Action<'T>

因此完整: Expression<Action<'T>>

在我这边,我有一种方法可供使用:

let doSomething () = () 因此其签名为unit -> unit

Action(doSomething)如果被叫方使用Action,我怎么能完美传递,但没有。

那么,如何将我转换unit -> unitExpression<Action<'T>>

svi*_*ick 5

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

BackgroundJob.Enqueue(fun x -> doSomething())
Run Code Online (Sandbox Code Playgroud)