相关疑难解决方法(0)

如何访问受保护的成员

我在扩展类型(在F#中)有以下代码,它调用它继承的类的受保护方法(在C#中),但我得到了异常(见下文).这有解决方法吗?

let getPagereference id =
    this.ConstructPageReference(id)
Run Code Online (Sandbox Code Playgroud)

无法访问成员或对象构造函数"ConstructPageReference".只能在声明类型中访问私有成员.受保护的成员只能从扩展类型访问,并且无法从内部lambda表达式访问.

更新:

我试过跟随但得到相同的结果

let getPagereference id =
    base.ConstructPageReference(id)
Run Code Online (Sandbox Code Playgroud)

更新2(解决方案):

这是代码:

type MyNewType() =
    inherit SomeAbstractType()

    let getPagereference id =
        base.ConstructPageReference(id)

    override this.SomeMethod()=
       let id = 0
       let pr = getPagereference id
Run Code Online (Sandbox Code Playgroud)

这应该是这样的:

type MyNewType() =
    inherit SomeAbstractType()

    member this.ConstructPageReference(id) =
        base.ConstructPageReference(id)

    override this.SomeMethod()=
       let id = 0
       let pr = this.ConstructPageReference(id)
Run Code Online (Sandbox Code Playgroud)

f# protected

7
推荐指数
2
解决办法
1438
查看次数

标签 统计

f# ×1

protected ×1