Cast d'objets hérités

Résolu
cs_grrrrrrrrrr Messages postés 3 Date d'inscription mardi 15 août 2006 Statut Membre Dernière intervention 15 août 2006 - 15 août 2006 à 11:46
white_mage Messages postés 47 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 25 février 2010 - 15 août 2006 à 15:24
Bonjour,


J'ai une question vraiment bête...mais j'ai l'impression de regresser.


J'ai une class "MaClassBase" dans une bibliothèque de class. J'ai, dans mon projet, hérité une class "MaClassHeritee" qui ajoute une simple procédure de traitement.


J'ai une fonction qui me renvoie une "list(of MaClassBase)" j'aimerais convertir cette liste en "liste(of MaClassHeritee)". Cela me semble possible....mais aucune conversion ne fonctionne (CType, DirectCast, etc...). Je n'arrive pas non plus à convertir un objet MaClassBase en MaClassHeritee.


J'ai du rater un épisode parce qu'il me semble que je l'ai déjà fait plusieurs fois ?!?


Merci pour vos réponses...


grrrrrrrrrr

5 réponses

white_mage Messages postés 47 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 25 février 2010
15 août 2006 à 15:24
On y arrive en convertissant la liste de class de base en list de class héritée via la méthode générique ConvertAll.

Un simple exemple :
Dim

obj
As List(
Of ObjetBase)  = ...
'..Remplir la list ici !!

Dim objH
as list(
of ObjetHerite) = obj.ConvertAll(
New Converter(
of ObjetBase, ObjetHerite)(
addressOf maFonctionQuiVaFaireLaConversionObjetBaseAObjetHerite)

Private
Function maFonctionQuiVaFaireLaConversionObjetBaseAObjetHerite(
ByVal o
As ObjetBase)
As ObjetHerite

Dim objTmpHerite
As
New ObjetHerite
objTmpHerite.propriete1 = o.propriete1
objTmpHerite.propriete2 = o.propriete2

'Etc.........
End
Function
Voili voilo !!! Une conversion qui utilise la magie des génériques....
A+++
White_Mage();
3
Utilisateur anonyme
15 août 2006 à 12:11
Salut,

Tu peut pas convertire une class cA en sa classe hérité cB.
Par contre tu peux faire l'inverse.



Kenji



Il était une fois, un pauvre petit règlement que personne ne lisait. Il est tout sympa mais il est triste, aidez-le, lisez-le, ca lui ferait plaisir ainsi qu'a n
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
15 août 2006 à 12:15
Tout à fait : une voiture et un véhicule, par contre, un véhicule n'est pas forcément une voiture. C'est le principe même de l'héritage !
0
cs_grrrrrrrrrr Messages postés 3 Date d'inscription mardi 15 août 2006 Statut Membre Dernière intervention 15 août 2006
15 août 2006 à 14:02
Grrre. C'est un peu bête mais c'est vrai que c'est logique.
Mais alors comment transformer ma liste "classBase" en "classHeritee" afin de pouvoir utiliser la fonction qui si trouve et qui utilise les membre de la class base ?? Y'a t-il un moyen de le faire ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_grrrrrrrrrr Messages postés 3 Date d'inscription mardi 15 août 2006 Statut Membre Dernière intervention 15 août 2006
15 août 2006 à 14:07
De plus, je n'arrive pas a convertir une liste de type "classHeritee" en type "classBase" non plus !!! J'ai exactement le même message d'erreur dans un sens ou dans l'autre....
0
Rejoignez-nous