2009-06-24 8 views
0

Je sais que vous ne pouvez pas passer un objet basé non IEnumerable dans une méthode auxiliaire ASP.NET MVC SelectList (car il attend un IEnumerable pour le premier paramètre). J'ai une liste générique List<OurCustomType> et OurCustomType a des propriétés pour des choses telles que la valeur, etc. pour la liste déroulante.Passer la liste générique dans SelectLista

Donc, si je ne peux pas passer un objet générique à un IEnumerable, quelles autres options ai-je ici si je veux toujours utiliser l'assistant SelectList?

Répondre

1

IEnumerable<T> étend IEnumerable, donc List<T> implémente déjà IEnumerable. Ça devrait aller. Par exemple:

List<int> genericList = new List<int>(); 
IEnumerable<int> genericSequence = genericList; 
IEnumerable weakSequence = genericSequence; 
0

Si vous avez un oeil à la définition de IEnumerable<T> dans le cadre docs, vous verrez qu'il hérite de la IEnumerable non générique. Comme la liste <T> hérite IEnumerable <T>, et donc IEnumerable, vous serez en mesure de le transmettre dans votre liste SelectList sans problèmes. Cela a été fait précisément pour ce problème - la compatibilité descendante avec le code non générique existant, même si cela le rend un peu ennuyeux lors de l'implémentation de votre propre IEnumerable, car vous devez également fournir la version non générique. Merci aux gens adorables de l'équipe BCL pour cela: D

Questions connexes