Quartz.NET 和 F# - SystemTime 和 KeyMatcher
Quartz.NET and F# - SystemTime and KeyMatcher
我正在尝试在 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 构造函数,我会收到一个与它需要一个函数的事实相关的错误。
单个=
是一个相等比较操作。如果要进行赋值,请使用 <-
赋值运算符。
除此之外,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
我正在尝试在 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 构造函数,我会收到一个与它需要一个函数的事实相关的错误。
单个=
是一个相等比较操作。如果要进行赋值,请使用 <-
赋值运算符。
除此之外,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