我正在使用C#开发一个F#库供另一个团队使用。我应该注意哪些事情知道其他团队希望这个库的行为与任何其他C#库一样?
例如,如果我使用Options类型,当我向C#公开时,我需要将它们转换为null。其他一些可能的过渡区域可能是计算表达式,FastFunc,事件和命名问题。
答案 0 :(得分:14)
F# Component Design Guidelines是一份旨在回答这个问题的文件。
答案 1 :(得分:5)
确保不暴露任何F#类型,特别是列表,地图等(暴露类型为Microsoft.FSharp.Collections.FSharpMap
的东西肯定会让C#团队疯狂)。当您公开一个F#集合的getter或者返回类型时,请调用List.toSeq
,最后会得到一个IEnumerable
,这在C#中更好用。
除此之外,你应该没问题。我之前只在一个项目中使用了F#和C#,这是我唯一真正的问题/烦恼,使两者互操作。