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)
引用 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)