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