2010-03-02 2 views
6

У меня есть следующий код в расширяющемся типе (в F #), который вызывает защищенный метод класса, который он наследует от (в C#) , но я получаю исключение (см. Ниже). Есть ли обходной путь для этого?Как получить доступ к защищенному члену

let getPagereference id = 
    this.ConstructPageReference(id) 

Член или 'ConstructPageReference' конструктор объекта не доступен. Доступ к частным членам возможен только из типа объявления. Защищенные члены могут быть доступны только из расширяемого типа и не могут быть доступны из внутренних лямбда-выражений.

Update:

Я попытался следующие, но получить тот же результат

let getPagereference id = 
    base.ConstructPageReference(id) 

Update 2 (раствор):

здесь код, как это было:

type MyNewType() = 
    inherit SomeAbstractType() 

    let getPagereference id = 
     base.ConstructPageReference(id) 

    override this.SomeMethod()= 
     let id = 0 
     let pr = getPagereference id 

это то, как это должно было быть:

type MyNewType() = 
    inherit SomeAbstractType() 

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

    override this.SomeMethod()= 
     let id = 0 
     let pr = this.ConstructPageReference(id) 
+0

F # (и AFAIK все языки CLI) почитает модификаторы доступа: http://msdn.microsoft.com/en-us/library/ms173121.aspx –

+0

Или, может быть, я не понял вопроса ... –

+0

well say что для f # interactive – Enes

ответ

6

Гейб является правильным. Код:

let getPagereference id = 
    this.ConstructPageReference(id) 

такая же, как

let getPagereference = fun id -> 
    this.ConstructPageReference(id) 

и вы, таким образом, косвенно пытается вызвать базовый метод внутри лямбда-выражения. Вам нужно будет сделать это от члена, а не от связанной функции.

6

небось ключевой частью является не могут быть доступны с внутренней лямбда-выражений. Вероятно, вы пытаетесь сделать доступ из лямбда.

Вы пробовали

member this.getPagereference(id) = 
    this.ConstructPageReference(id) 
+0

К сожалению, я не – Enes

Смежные вопросы