转换单位 -> 单位到行动
Convert an unit -> unit to Action
要将 Hangfire 与 F# 结合使用,我需要一些帮助:
Hangfire 的 BackgroundJob.Enqueue
将泛型 Action<'T>
的 System.Linq.Expressions.Expression
作为参数。
在我这边,我有一个方法可以使用:
let doSomething () = ()
因此它的签名是unit -> unit
。
如果被调用者选择 Action
,我如何能够完美地传递 Action(doSomething)
,但事实并非如此。
那么如何将我的 unit -> unit
转换为 Expression<Action<'T>>
?
正如 kvb 在评论中所说,F# 支持将 lambda 转换为 Expression
s,就像 C# 一样。所以,如果你想创建一个忽略其输入并调用 doSomething
的表达式,它只是:
BackgroundJob.Enqueue(fun x -> doSomething())
要将 Hangfire 与 F# 结合使用,我需要一些帮助:
Hangfire 的 BackgroundJob.Enqueue
将泛型 Action<'T>
的 System.Linq.Expressions.Expression
作为参数。
在我这边,我有一个方法可以使用:
let doSomething () = ()
因此它的签名是unit -> unit
。
如果被调用者选择 Action
,我如何能够完美地传递 Action(doSomething)
,但事实并非如此。
那么如何将我的 unit -> unit
转换为 Expression<Action<'T>>
?
正如 kvb 在评论中所说,F# 支持将 lambda 转换为 Expression
s,就像 C# 一样。所以,如果你想创建一个忽略其输入并调用 doSomething
的表达式,它只是:
BackgroundJob.Enqueue(fun x -> doSomething())