Cast d'objets hérités

Résolu
Messages postés
3
Date d'inscription
mardi 15 août 2006
Statut
Membre
Dernière intervention
15 août 2006
-
Messages postés
47
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
25 février 2010
-
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

Messages postés
47
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
25 février 2010

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();
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
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
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
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 !
Messages postés
3
Date d'inscription
mardi 15 août 2006
Statut
Membre
Dernière intervention
15 août 2006

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 ?
Messages postés
3
Date d'inscription
mardi 15 août 2006
Statut
Membre
Dernière intervention
15 août 2006

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....