Comment écrire générique IEnumerable<SelectListItem> méthode d'extension
Je suis assez nouveau (ok, Vraiment nouveau) pour les génériques mais j'aime l'idée. Je vais avoir un peu de listes déroulantes sur une vue et je voudrais un moyen générique de prendre une liste d'objets et de le convertir en une liste de SelectListItems
Ce que j'ai maintenant:
public static IEnumerable<SelectListItem> ToSelectListItems(
this IEnumerable<SpecificObject> items, long selectedId)
{
return
items.OrderBy(item => item.Name)
.Select(item =>
new SelectListItem
{
Selected = (item.Id == selectedId),
Text = item.Name,
Value = item.Id.ToString()
});
}
Problème, c'est que j'avais besoin de répéter que le code pour chaque liste déroulante que les objets sont différents champs qui représentent la Text
propriété de la SelectListItem
Voici ce que j'aimerais faire:
public static IEnumerable<SelectListItem> ToSelectListItem<T>(this IEnumerable<T> items, string key, string value, int SelectedId) {
//I really have no idea how to proceed from here :(
}
OriginalL'auteur Dan | 2010-03-05
Vous devez vous connecter pour publier un commentaire.
Eh bien, vous pourriez faire quelque chose comme ceci:
Comment pourrais-je appeler ce et, en particulier, utilisez la fonction 'sélectionné' délégué?
Très belle solution!
OriginalL'auteur bruno conde
Vous pouvez passer en les délégués à faire des comparaisons, et de la récupération de propriété. Quelque chose comme ceci:
Alors que vous pouvez l'utiliser comme ceci:
Hmm, je veux marquer à la fois le présent et le prochain de questions que de réponses :). Les deux sont exactement ce que je cherche!
merci, j'ai raté celui-là.
OriginalL'auteur Abe Heidebrecht
Dans l'ordre pour que cela fonctionne, comme l'écrit, de votre type de
T
devront mettre en place une interface qui fournitName
etId
propriétés:Dans ce lieu, vous pouvez le faire:
Cela est nécessaire pour utiliser le
Name
etId
propriétés à l'intérieur de votre méthode d'extension... on pourrait, au lieu de cela, fournir un moyen différent de la réception de ceux-ci (c'est à dire: en passant délégués), mais qui peut ou ne peut pas augmenter le coût de l'entretien de votre scénario.OriginalL'auteur Reed Copsey