OVH Cloud OVH Cloud

Héritage et cast

8 réponses
Avatar
MrChris
Salut !

J'ai le souci suivant : j'ai fait une classe CNode qui hérite de treenode.
Et j'aimerais pouvoir faire un truc du style :

Dim MonNode as new CNode
MonNode = Treeview1.selectednode

Le compilateur me jette car il ne sait pas faire un cast de TreeNode vers
CNode.
Je le comprend, car CNode n'est plus vraiment un TreeNode même si il en
hérite...

Comment faire pour lui apprendre à faire ce cast ???
Sachant que CNode est un treenode avec juste 2 propriétés en plus.

Y a moyen ???

Merci
MrChris

8 réponses

Avatar
MrChris
Ouupps, exemple en Vb...
En C# ca doit donner un truc du style :

CNode MonNode = new CNode();
MonNode = treeView1.SelectedNode;

:))

MrChris

"MrChris" a écrit dans le message de news:
u546$
Salut !

J'ai le souci suivant : j'ai fait une classe CNode qui hérite de treenode.
Et j'aimerais pouvoir faire un truc du style :

Dim MonNode as new CNode
MonNode = Treeview1.selectednode

Le compilateur me jette car il ne sait pas faire un cast de TreeNode vers
CNode.
Je le comprend, car CNode n'est plus vraiment un TreeNode même si il en
hérite...

Comment faire pour lui apprendre à faire ce cast ???
Sachant que CNode est un treenode avec juste 2 propriétés en plus.

Y a moyen ???

Merci
MrChris



Avatar
MrChris
Ce qui me paraît étrange, c'est que dans l'autre sens ca fonctionne :

CNode MonNode = new CNode();
treeView1.SelectedNode = MonNode;

Etrange...

@+MrChris
Avatar
Boris Sargos
MrChris a écrit :
Ce qui me paraît étrange, c'est que dans l'autre sens ca fonctionne :

CNode MonNode = new CNode();
treeView1.SelectedNode = MonNode;

Etrange...

@+MrChris




Salut MrChris,

c'est normal que cela fonctionne, MonNode est avant tout un TreeNode.
A l'inverse, SelectedNode est de type TreeNode, qui ne peut être
converti en CNode par le compilateur, car il ne sait pas comment faire !
Donc, il te faut écrire toit-même ton operator de cast.

A+
Avatar
MrChris
Il me semblais bien...
Comment on écris soi-même son opérateur de cast ???

Merci
MrChris
Avatar
Frédéric Queudret [MS]
Bonjour,

Vous trouverez les tutoriels pour implémenter votre opérateur de conversion
sur le site MSDN:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vcwlkuser-definedconversionstutorial.asp

cdlt,
Frédéric.

"MrChris" wrote in message
news:%23CLpl$
Il me semblais bien...
Comment on écris soi-même son opérateur de cast ???

Merci
MrChris



Avatar
MrChris
Merci beaucoup...
MrChris
Avatar
MrChris
C'est fou ça ! ce n'est valable que pour C# ???
Je croyais que VB et C# etait sensiblement équivalent !

@+MrChris
Avatar
Ambassadeur Kosh
perso, je déconseille cette approche.
un début de commencement, ça serait d'heriter le treeview, et de fournir des
accesseur qui manipulent tes treenode à toi. le cast se faisant à
l'interieur du container uniquement. c'est comme collectionbase.
l'idéal, à mon avi, c'est d'écrire un TreeViewBase<T>, en pompant le code
sous reflector.
le wrap est envisageable, mais ça n'est pas forcément simple.

bon courage