7

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

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

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

4

2 回答 2

12

是的。有可能的。

type SomeClass =
    inherit SomeCSharpBase

以下是更多细节:

继承 (F#)

于 2012-09-17T19:30:19.917 回答
6

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

type FSharpClass() =
    inherit System.AccessViolationException()

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

type FSharpRecord =
    { d : System.IDisposable }
    interface System.IDisposable with
        member this.Dispose() = this.d.Dispose()
于 2012-09-20T07:19:26.340 回答