1

我正在尝试在 F# 中使用 Quartz.NET,并且遇到了一些问题,尽管 Quartz.NET 在 F# 中可用,但似乎没有太多关于它的文档,而且我遇到了一些困难它与 C# 中的内容之间存在差异。

我目前遇到的一个问题是设置 SystemTime,例如这个问题 Quartz.net + testing with SystemTime.UtcNow中所示。

我可能是错的,但我认为 F# 中的代码应该是:

SystemTime.Now = fun () -> DateTime(someDate)
SystemTime.UtcNow = fun () -> DateTime(someDate)

但是我收到一个错误,即在不期望的地方使用了太多参数或函数。如果我只使用 DateTime 构造函数,我会收到一个与它期望一个函数有关的错误。

4

1 回答 1

1

single=是一个相等比较操作。如果要进行赋值,请使用<-赋值运算符。

除此之外,F# 函数与Func<T>. 通常,当您将它们用作方法参数时,转换会自动发生,但在这种情况下,您似乎需要显式执行转换:

open System
open Quartz

SystemTime.Now <- 
    Func<DateTimeOffset>(
        fun () -> DateTimeOffset(DateTime(2015, 4, 18), TimeSpan.FromHours 2.))
SystemTime.UtcNow <- 
    Func<DateTimeOffset>(
        fun () -> DateTimeOffset(DateTime(2015, 4, 18), TimeSpan.FromHours 2.))

从 F# 调用它们也有点复杂:

> SystemTime.Now.Invoke();;
val it : DateTimeOffset = 18.04.2015 00:00:00 +02:00
> SystemTime.UtcNow.Invoke();;
val it : DateTimeOffset = 18.04.2015 00:00:00 +02:00
于 2015-04-17T18:24:36.667 回答