F#类型是否可以从C#类“继承”?

时间:2012-09-17 19:27:32

标签: c# f# c#-to-f#

我在我的日子里曾经使用过Haskell但是很久以前所以我决定看一下F#。我使用C,C ++和C#进行了大量的日常开发。

我注意到在将F#编译为dll时,可以将F#类型作为C#中的类公开。但后来我开始思考。我有几个C#类我想把它放在F#的逻辑中(尝试一下)。但是很多现有的C#代码通过它们的基类来处理很多对象(这是非常简陋的)。是否可以使用C#中的基类作为F#类型的基础?或者F#只能继承其他F#类型吗?

这背后的原因是将基类保留为主要C#项目的一部分,并且特定的dll(类似于基类给定合同的插件类型)可以用F#编写。如果无法完成,我将不得不添加另一个仅包含感觉有点过于复杂的基类的F#项目。

2 个答案:

答案 0 :(得分:11)

是。这是可能的。

type SomeClass =
    inherit SomeCSharpBase

以下是一些更多细节:

Inheritance (F#)

答案 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()
相关问题