F#中实现两个不兼容接口的InfluxValueField

InfluxValueField that implements two interfaces incompatible in F#

引用 Nuget 包 AdysTech.InfluxDB.Client.Net.Core,此代码将无法编译。我怎样才能改变它以使其编译?

open AdysTech.InfluxDB.Client.Net

let event1 = InfluxDatapoint<'T>()
let field1 = InfluxValueField(42.99) // :> IComparable<InfluxValueField>
let addFields () = 
    event1.Fields.Add("amountRequestedUSD", field1) // //Error  FS0001  The type 'InfluxValueField' is not compatible with the type 'IComparable<InfluxValueField>'.

IInfluxValueField的定义是public interface IInfluxValueField : IComparable, IComparable of IInfluxValueField

InfluxValueField的定义是public class InfluxValueField : IInfluxValueField

似乎 F# 难以应对这种实现了两个接口的类型,但当然它应该不会有任何问题。

您还可以在 https://github.com/ScottHutchinson/InfluxDBFSharpClient

获取包含此代码的解决方案

这是 Weird C# / F# difference in a declaration, code compiling in C# but not in F#

问题的简化版本

F# Software Foundation 的一名成员提供了这个答案。

open AdysTech.InfluxDB.Client.Net

let event1 = InfluxDatapoint<IInfluxValueField>()
let field1 = InfluxValueField(42.99)
let addFields () = 
    event1.Fields.Add("amountRequestedUSD", field1)