F#构造函数语法 - 覆盖和扩充新的

Ben*_*jol 7 syntax f# constructor

我有一个非一次性类,我希望能够使用Open/Close语法use,所以我试图继承它,并将Open打开到newClose to Dispose.

第二部分没问题,但我无法解决如何进行Open:

type DisposableOpenCloseClass(openargs) =
    inherit OpenCloseClass()
    //do this.Open(openargs)  <-- compiler no like
    interface IDisposable
        with member this.Dispose() = this.Close()
Run Code Online (Sandbox Code Playgroud)

(参考我很久以前问过的这个问题,但我不能加入这个问题)

Bri*_*ian 10

关键是as this:

type OpenCloseClass() =
    member this.Open(x) = printfn "opened %d" x
    member this.Close() = printfn "closed"

open System

type DisposableOpenCloseClass(openargs) as this = 
    inherit OpenCloseClass() 
    do this.Open(openargs)
    interface IDisposable 
        with member this.Dispose() = this.Close() 

let f() =
    use docc = new DisposableOpenCloseClass(42)
    printfn "inside"

f()
Run Code Online (Sandbox Code Playgroud)