首页 > 解决方案 > 在 F# 中实现两个不兼容的接口的 InfluxValueField

问题描述

引用 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公共接口 IInfluxValueField : IComparable, IComparable 的 IInfluxValueField

的定义InfluxValueField公共类 InfluxValueField : IInfluxValueField

似乎 F# 在处理这种实现两个接口的类型时遇到了麻烦,但它当然不应该有任何问题。

您还可以在https://github.com/ScottHutchinson/InfluxDBFSharpClient获取包含此代码的解决方案

这是Weird C# / F# difference in a declaration, code compile in C# but not in F# 中问题的简化版本

标签: f#influxdb

解决方案


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

open AdysTech.InfluxDB.Client.Net

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

推荐阅读