Heu… non seulement tu inverses complètement la logique des interfaces, mais en plus ça ne résoud pas le problème… (mais alors pas du tout
)
Dans ton raisonnement gérer "MouseDown" à lui seul impliquerait de gérer intégralement "Tooltip". Complètement illogique…
Car du coup, implémenter CanHaveToolTip ne donne absolument aucune garantie sur l'objet et c'est complètement débile.
Mais il y a en effet une solution que j'ai oublié de mentionner, c'est d'utiliser object et de se débarasser de CanHaveToolTip… Ce qui ne rendra pas pour autant le code plus élégant, mais marchera sans modification.