Mam następujący kod w rozszerzeniu typu (w F #), który wywołuje metodę chronioną klasy, z której dziedziczy (w języku C#) , ale otrzymuję wyjątek (zobacz poniżej). Czy istnieje obejście tego problemu?Jak uzyskać dostęp do chronionego elementu
let getPagereference id =
this.ConstructPageReference(id)
Człon lub obiekt konstruktora 'ConstructPageReference' nie jest dostępny. Dostęp do prywatnych członków można uzyskać tylko z poziomu deklarowanego typu. Dostęp do chronionych członków można uzyskać tylko z typu rozszerzającego i nie można uzyskać do nich dostępu z wewnętrznych wyrażeń lambda.
Aktualizacja:
Próbowałem następujących ale otrzymuję ten sam rezultat
let getPagereference id =
base.ConstructPageReference(id)
Update 2 (roztwór):
Oto kod, jak to było:
type MyNewType() =
inherit SomeAbstractType()
let getPagereference id =
base.ConstructPageReference(id)
override this.SomeMethod()=
let id = 0
let pr = getPagereference id
to jak powinno być:
type MyNewType() =
inherit SomeAbstractType()
member this.ConstructPageReference(id) =
base.ConstructPageReference(id)
override this.SomeMethod()=
let id = 0
let pr = this.ConstructPageReference(id)
F # (i AFAIK dla wszystkich języków interfejsu CLI) wyróżnia modyfikatory dostępu: http://msdn.microsoft.com/en-us/library/ms173121.aspx –
A może nie rozumiem pytania ... –
to do f # interactive – Enes