J'ai une méthode qui calcule une liste. À certains points de l'algorithme, un seul élément de la liste doit être choisi. Peu importe quel élément est choisi, mais je voudrais laisser à l'utilisateur de décider.Comment spécifier une méthode de sélection de liste?
En ce moment, j'ai ajouté une méthode d'extension IList<T>.Random()
qui prend simplement un élément aléatoire. .First()
aurait aussi bien fonctionné. Supposons que je veuille laisser l'utilisateur choisir quelle méthode est utilisée, ou peut-être une méthode entièrement différente, à quoi cela ressemblerait-il?
Je pensais utiliser une énumération avec des options limitées, et ensuite je pourrais envelopper chacun de ces appels dans un commutateur et appeler la fonction appropriée. Mais peut-être some sort of lambda function serait plus approprié? Cette méthode doit être utilisée à deux endroits différents, une fois sur un List<char>
et une fois sur un List<string>
. Je veux utiliser la même méthode pour les deux.
Ceci n'est pas une application graphique. J'essaie de décider comment concevoir l'API.
Plus précisément, je veux avoir un champ comme
public Func<IList<T>, T> SelectElement = list => list.First();
qui serait ensuite utilisée dans la méthode,
public string Reverse(string pattern, IList<object> args = null, IDictionary<string, object> kwargs = null)
Mais champs génériques ne sont pas possibles. Donc je cherche une solution alternative. Un serait de faire de la méthode SelectElement
un argument à Reverse(), alors je pourrais le rendre générique ... mais j'espérais le garder au niveau de la classe pour la réutilisation. Je ne veux pas passer plus d'arguments à la fonction si je peux l'aider.
Edit:full source code
Quelle est votre moyen client? Je dirais que DropDownList ou RadioButtonList serait approprié. –
@Nathan: Ce n'est pas une application gui. Mis à jour Q. – mpen
J'ai lu la question trois fois et ne comprends toujours pas ce que vous demandez :) vous avez une liste d'objets que vous voulez trier et ... ici vous me perdez ... et vous voulez que l'utilisateur choisir comment trier cette liste? précisez s'il vous plaît. – akonsu