Существует интерфейс (скажем, IA), реализация (скажем Base) интерфейса IA и производный класс Base (например, Derived), который переопределяет абстрактный член IA. Теперь, в реализации переопределенного элемента, я хочу использовать реализацию элемента Base. Однако я не знаю, как писать для этого.Как использовать базовую реализацию переопределенного абстрактного элемента?
Этот код иллюстрирует мой вопрос:
type Flag =
| F1 = 1
| F2 = 2
type IA =
abstract member A: Flag
type Base() =
interface IA with
member this.A = F1
type Derived() =
inherit Base()
interface IA with
override this.A = (* ? *)
// base.A ||| F2 // NG (Compile error that `A` isn't a member of `base`)
// (base :> IA).A ||| F2 // NG (Syntax error)
// (this :> IA).A ||| F2 // NG (Infinite recursion)
Не уверен в этом - я думал '((это:> База):> IA). Возможно, сработало, но все равно stackoverflows –
Базовый метод не является общедоступным, вы не можете его вызвать извне. –