J'ai une fonction qui prend une classe de base comme paramètre: i alors je souhaite ensuite créer une liste pour passer à cette fonction. La liste sera composée d'objets dérivés de classes qui implémentent J'ai déjà des objets dérivés d'une classe qui est dérivée d'une classe qui implémente Comment puis-je assigner Cela ne fonctionne pas: Mon objectif est de passer Dans une liste de listes qui détiennent des objets qui implémentent ibasitemclass code>. P>
ibasitemclass code> et renvoie une liste d'éléments dérivés. p>
dériveditem1 code> et
dériveditem1 code> à
myist code>? p>
myList.add (Deriveditemlist); code> P>
ibasitemclass code> à
myfunction code> afin que je puisse les traiter de la même manière car ils implémentent la même classe de base. P> p>
3 Réponses :
MyList est une liste de la liste des objets. Mais vous avez essayé de transmettre un seul objet à myList.add (). C'est pourquoi cela échoue. Vous devrez d'abord créer les objets de liste individuels d'abord, puis les ajouter à la myiste. P>
J'ai fait des modifications pour clarifier que dériveditem code> est une liste. J'ai changé le nom sur
dérivéImlist code>.
Étant donné que DeriveDeMl1 hérite d'ibasitemclass mais myList.add () s'attend à une liste d'ibasitemclass.
Et vous lui donnez une liste de DeriveDeM1 qui n'hérite pas de la liste d'ibasetitemplas de toute façon. P>
ici est une solution, pas une solution idéale mais une solution de contournement, essayez d'ajouter comme ceci, il devrait fonctionner: p> ou utilisez simplement la méthode d'extension iEnumerable comme suggérée par @juharrr Les commentaires comme: p>
Merci rashid. Pourriez-vous s'il vous plaît expliquer pourquoi votre suggestion fonctionne et pourquoi ce n'est pas idéal. Comment suggéreriez-vous accomplir ce que j'essaie d'accomplir de manière meilleure?
Rashid, une autre chose que j'avais essayée dans le sens de votre suggestion était la suivante: myList.add (Deriveditem1 comme liste
Vous pouvez transmettre un objet de classe dérivé à une fonction qui attend l'objet de la classe de base en tant que paramètre, mais la liste
J'ai compris! Merci!
Il est plus simple d'utiliser casting
Définissez simplement les listes comme Liste
Liste
MyList Code> prend clairement listes i> de
ibasetemclass code>, vous ne pouvez donc pas ajouter des éléments uniques, vous devez ajouter des listes d'entre elles.
Pas une solution idéale mais un travail autour, essayez d'ajouter comme ceci: myList.add (dériveditemlist.select (élément => élément comme ibaseitemclass) .tolist ());