F# 从方法调用抽象函数';s自己的实现

F# 从方法调用抽象函数';s自己的实现,f#,abstract,F#,Abstract,我尝试从方法自己的实现中调用函数 [<AbstractClass>] type CallAnAbstract () = let doSomethingElse () = printfn "Done Something.." abstract doSomethingAbstract: unit -> unit member this.DoSomething = printfn "Done Something.." d

我尝试从方法自己的实现中调用函数

[<AbstractClass>]
type CallAnAbstract () = 

    let doSomethingElse () = printfn "Done Something.."

    abstract doSomethingAbstract: unit -> unit

    member this.DoSomething =
        printfn "Done Something.."
        doSomethingElse ()
        doSomethingAbstract ()
[(见答案)@Mark Seemann解释了组合而非继承:

[<AbstractClass>]
type UseComposition (doSomethingElseDefinedLater) = 

    let doSomethingElse () = printfn "Done Something.."

    member this.DoSomething =
        printfn "Done Something.."
        doSomethingElse ()
        doSomethingElseDefinedLater ()
[]
类型使用成分(doSomethingElseDefinedLater)=
让doSomethingElse()=printfn“做了某事…”
请记住这件事=
printfn“完成了某事…”
doSomethingElse()
dosomethingelesdefinedlater()

有哪些替代方案?我会避免通过构造函数传递函数,我希望重用some代码,在调用抽象函数之前,让
DoSomething
有“一些实现”。

您需要使用
参考:

this.doSomethingAbstract()

啊,好的。谢谢。我认为只有
成员
需要以这种方式引用。它是
抽象
成员。它是
私有
,并且没有使用
抽象成员
声明。这不是一种
抽象
方法吗?不确定确切的定义,但我怀疑用关键字
定义的任何东西>成员
是一个成员。它将包括属性和方法。
绑定不能使用
引用调用,只能使用成员。的确,
摘要
成员定义不包括关键字
成员
,但重写或默认实现会包含关键字。