GW74372
Messages postés6Date d'inscriptionmercredi 24 septembre 2008StatutMembreDernière intervention31 mars 2010 27 juil. 2009 à 16:41
Bonjour,
j'avoue être surpris du peu de renseignement sur le sujet
Mais voici l'astuce que j'ai trouvé dans ce cas:
public override object Clone()
{
MyTreeNode node = new MyTreeNode();
((TreeNode)node)=base.Clone();
node.m_MaPropriete = this.m_MaPropriete;
return node;
}
En fait, j'étais tombé sur ce probleme en VB.Net et j'ai du le résoudre de la même manière.
Si quelqu'un d'autre à une meilleur idée, je suis vivement intéresser.
cs_Crazyht
Messages postés1522Date d'inscriptionmardi 18 décembre 2001StatutMembreDernière intervention21 août 20108 7 févr. 2008 à 17:31
Alors la comme ca tres franchement je vois pas, personnelemnt je passes plus facilement par une serialisation Binaire puis une deserialisation pour faire des clones.
Votre explication semble plus que logique en effet, si je trouve 2 minutes à l'occasion, je regarderais...
benpolice
Messages postés4Date d'inscriptiondimanche 20 novembre 2005StatutMembreDernière intervention16 mai 2011 7 févr. 2008 à 15:25
dans votre code vous faites un
public override object Clone()
{
MyTreeNode node = (MyTreeNode)base.Clone();
node.m_MaPropriete = this.m_MaPropriete;
return node;
}
j'ai réutilisé cette technique en prenant comme classe mère la classe A, et puis je définis une classe B qui hérite de A. Je me retrouve dans la même situation que vous, c'est à dire que ma classe A TreeNode, et ma classe B MyTreeNode.
Je travaille avec C#, pas c#2, et la ligne
MyTreeNode node = (MyTreeNode)base.Clone(); est incorrecte, car, le base.Clone() retourne une instance de la classe TreeNode, et ne peut être transtypée en objet de la classe MyTreeNode, cela constitue une erreur.
Ce qui est logique, car le base.Clone() retourne effectivement un objet de type Treenode, il est impossible de le considérer ensuite comme un objet de type MyTreeNode. L'inverse est par contre possible, car un MyTreeNode est un TreeNode, mais un TreeNode n'est pas un MyTreeNode.
on obtient à l'exécution une erreur du type "invalid cast".
Comment expliquez vous cela?
27 juil. 2009 à 16:41
j'avoue être surpris du peu de renseignement sur le sujet
Mais voici l'astuce que j'ai trouvé dans ce cas:
public override object Clone()
{
MyTreeNode node = new MyTreeNode();
((TreeNode)node)=base.Clone();
node.m_MaPropriete = this.m_MaPropriete;
return node;
}
En fait, j'étais tombé sur ce probleme en VB.Net et j'ai du le résoudre de la même manière.
Si quelqu'un d'autre à une meilleur idée, je suis vivement intéresser.
7 févr. 2008 à 17:31
Votre explication semble plus que logique en effet, si je trouve 2 minutes à l'occasion, je regarderais...
7 févr. 2008 à 15:25
public override object Clone()
{
MyTreeNode node = (MyTreeNode)base.Clone();
node.m_MaPropriete = this.m_MaPropriete;
return node;
}
j'ai réutilisé cette technique en prenant comme classe mère la classe A, et puis je définis une classe B qui hérite de A. Je me retrouve dans la même situation que vous, c'est à dire que ma classe A TreeNode, et ma classe B MyTreeNode.
Je travaille avec C#, pas c#2, et la ligne
MyTreeNode node = (MyTreeNode)base.Clone(); est incorrecte, car, le base.Clone() retourne une instance de la classe TreeNode, et ne peut être transtypée en objet de la classe MyTreeNode, cela constitue une erreur.
Ce qui est logique, car le base.Clone() retourne effectivement un objet de type Treenode, il est impossible de le considérer ensuite comme un objet de type MyTreeNode. L'inverse est par contre possible, car un MyTreeNode est un TreeNode, mais un TreeNode n'est pas un MyTreeNode.
on obtient à l'exécution une erreur du type "invalid cast".
Comment expliquez vous cela?
Extreme Programmer. (benpolice@hotmail.com)