Ok, je dérive un type B
à partir d'une classe de base A
. A
met en œuvre IDisposable
explicite mais je dois faire un nettoyage supplémentaire dans B
donc je mets en œuvre IDisposable
sur B
:
interface IDisposable with
member i.Dispose() =
// ... additional work
base.Dispose() // <- want to do but cannot
La question est : comment accéder à la méthode Dispose depuis la base ?
(base :> IDisposable).Dispose()
produit une erreur de compilation : Unexpected symbol ':>' in expression. Expected '.' or other token.
Faire quelque chose comme
(i :> IDisposable).Dispose()
donne bien sûr un StackOverflowException
au moment de l'exécution - alors comment puis-je faire cela ? Désolé, mais je n'ai jamais rencontré quelque chose comme ça auparavant...