F# 将 Seq 转换为 ICollection

Woj*_*icz 1 f#

我有一系列类型

let rackStatusesPrototype : RackStatus seq
Run Code Online (Sandbox Code Playgroud)

现在我想将它分配给一个来自 C# 且是 ICollection 类型的属性,但我遇到了问题。我试过:

let test : ICollection<RackStatus> = rackStatusesPrototype :> ICollection<RackStatus>
Run Code Online (Sandbox Code Playgroud)

但它说不兼容的类型。我能做些什么?

361*_*615 5

您可以做的最简单的事情就是open System.Linq调用ToList()您的方法rackStatusesPrototype将其转换为实现 ICollection 的 C# 列表。

F# Array 还实现了 ICollection,因此rackStatusesPrototype |> Array.ofSeq应该也可以工作。如果您没有与 C# 世界进行其他交互,这可能是首选方式。

请注意,F# list/set/map 当前未实现 ICollection 接口,但计划添加它