从 F# 访问显式转换运算符

ste*_*ong 5 f# npgsql

使用 npgsql 从 postgresql 读取日期值时出现以下错误:

This expression was expected to have type
    DateTime    
but here has type
    NpgsqlTypes.NpgsqlDate  
Run Code Online (Sandbox Code Playgroud)

现在 npgsql 文档引用了正在定义的显式运算符:

[C#]
public static explicit operator DateTime(
    NpgsqlDate date
);
Run Code Online (Sandbox Code Playgroud)

但我不知道如何从 F# 访问它。

有几种笨拙的、简单的方法可以实现我所需要的,但我感到失望和沮丧,因为我无法找到访问内置演员的方法。

我尝试了旧的 Convert.ToDateTime(...),但即使这样也不起作用。

有人有线索吗?谢谢。

Tea*_*Dev 6

可以通过调用类型上的op_Explicit(我在前面的注释中大小写错误;然后我自己没有尝试过)函数来访问显式转换运算符:

let date = NpgsqlDate.op_Explicit npgsqlDate
Run Code Online (Sandbox Code Playgroud)

为了方便起见,我还发现了多个地方(例如 Yan Cui 的博客)定义了 F# 运算符,例如!>for(all!) 显式转换,因此您可以说

let date = !> npgsqlDate
Run Code Online (Sandbox Code Playgroud)

我认为这是一个非常巧妙的方式。