Il existe une interface (disons IA), une implémentation (disons Base) de l'interface IA, et une classe dérivée de Base (disons Derived) qui remplace un membre abstrait de IA. Maintenant, dans l'implémentation du membre surchargé, je veux utiliser l'implémentation du membre de Base. Cependant, je ne sais pas comment écrire pour le faire.Comment utiliser l'implémentation de base d'un membre abstrait surchargé?
Ce code illustre ma question:
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)
Pas sûr de celui-ci - je pensais '((ceci:> Base):> IA) .A' aurait pu fonctionner - mais encore stackoverflows –
La méthode de base n'est pas publique, vous ne pouvez pas l'appeler de l'extérieur. –