我在我的日子里曾经使用过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#类可以从.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)