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

inq*_*uam 6 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#项目.

Jus*_*ner 11

是.有可能的.

type SomeClass =
    inherit SomeCSharpBase
Run Code Online (Sandbox Code Playgroud)

以下是一些更多细节:

继承(F#)

  • 那容易吗?哇...... C#类布局有什么限制吗?感觉就像他们两个(F#和C#)编译到相同的底层语言应该是非常直接的,但人们永远不会知道. (2认同)
  • @inquam - 阅读我提供的链接上的信息. (2认同)

Joh*_*Joh 5

F#类可以从.NET类继承:

type FSharpClass() =
    inherit System.AccessViolationException()
Run Code Online (Sandbox Code Playgroud)

其他一些F#类型(如记录,区分联合)不能从类继承,但它们可以实现接口:

type FSharpRecord =
    { d : System.IDisposable }
    interface System.IDisposable with
        member this.Dispose() = this.d.Dispose()
Run Code Online (Sandbox Code Playgroud)