J'essaie de créer une méthode Add surchargée en tant qu'extension de la classe OrderedDictionary et j'aimerais ajouter la clé/valeur en fonction de certains prédicats au cari.Aide sur le prédicat <T> délégué
Le code d'appel ressemblerait à ceci:
OrderedDictionary dict = new OrderedDictionary();
Predicate<int> lessThan5 = i=>; i < 5;
Predicate<string> lenOf2 = s=> s.length == 2;
dict.Add("01","Name", lessThan5);
dict.Add("02","place", lenOf2);
J'ai créé une méthode d'extension comme ceci:
public static class CollectionExtensions
{
public static void Add(this OrderedDictionary s, string k, string v, Predicate p)
{
if (p)
{
d.Add(k, v);
}
}
}
Mais cela ne fonctionne pas parce que je reçois une erreur de compilation de lecture « ne peut pas convertir Prédicat en booléen ".
Est-ce que quelqu'un sait ce que je manque?
Merci pour toute aide. -Keith
La valeur sous-jacente devrait avoir rien à voir avec les paramètres clés ou de valeur. Je souhaite que la fonction de prédicat prenne une valeur. Quelque chose comme ceci: Prédicat showPlaces = new Prédicat (u => u.isAllowed); Prédicat showPeople = nouveau Prédicat (i => i == 5); puis passez le prédicat showPlaces ou showPeople en tant que paramètre à une méthode qui l'évaluera sans passer de paramètre. si (p) d.Ajouter (k, v); –
Keith
Comment "un prédicat qui produit une valeur" n'est-il pas simplement une valeur booléenne? Peux-tu expliquer? –
Vous avez raison, Eric. Peut-être que je suis trop penser cela. – Keith