且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

声明中的C#/F#差异很奇怪,代码在C#中编译,但在F#中没有

更新时间:2023-02-09 17:13:57

此处的窍门是对接口进行编程,而不是对实现进行编程.因此,请使用接口作为通用类型参数,而不是具体类型.

The trick here is to program to interfaces instead of implementations. So use an interface as the generic type parameter, instead of a concrete type.

open AdysTech.InfluxDB.Client.Net
open System.Collections.Concurrent

let events = ConcurrentQueue<IInfluxDatapoint>()
let event1 = InfluxDatapoint<IInfluxValueField>()
let field1a = InfluxValueField(42.99)
let field1b = InfluxValueField("a message")
let event2 = InfluxDatapoint<IInfluxValueField>()
let field2a = InfluxValueField(0.05)

let addEvents () = 
    event1.Fields.Add("amountRequestedUSD", field1a)
    event1.Fields.Add("message", field1b)
    events.Enqueue(event1)
    event2.Fields.Add("someDouble", field2a)
    events.Enqueue(event2)