我在我的日子里曾经使用过Haskell但是很久以前所以我决定看一下F#。我使用C,C ++和C#进行了大量的日常开发。
我注意到在将F#编译为dll时,可以将F#类型作为C#中的类公开。但后来我开始思考。我有几个C#类我想把它放在F#的逻辑中(尝试一下)。但是很多现有的C#代码通过它们的基类来处理很多对象(这是非常简陋的)。是否可以使用C#中的基类作为F#类型的基础?或者F#只能继承其他F#类型吗?
这背后的原因是将基类保留为主要C#项目的一部分,并且特定的dll(类似于基类给定合同的插件类型)可以用F#编写。如果无法完成,我将不得不添加另一个仅包含感觉有点过于复杂的基类的F#项目。
答案 0 :(得分:11)
答案 1 :(得分:5)
F#类可以从.NET类继承:
type FSharpClass() =
inherit System.AccessViolationException()
其他一些F#类型(如记录,有区别的联合)不能从类继承,但它们可以实现接口:
type FSharpRecord =
{ d : System.IDisposable }
interface System.IDisposable with
member this.Dispose() = this.d.Dispose()