Question

Je suis un peu flou sur les nouveautés Action / Func / variance / covariance, ce qui est probablement ce que je dois.

Ce que je veux être en mesure de passer un délégué en tant que paramètre à une méthode, qui prend une chaîne et retourne un bool. Le problème est que je ne peux pas utiliser un délégué typé ou de l'interface, car il sera utilisé dans différentes bibliothèques qui ne les bibliothèques d'actions, et les deux sera invoquée par un tiers.

Donc, en général je veux que le délégué à déduire par lui est entrée et le type de retour.

Alors, ce sera comme:

delegate bool IncludeItemDelegate(string item);

ClassA.FetchItems(int someParameter,includeItemDelegate);
ClassB.FetchItems(int someParameter,string someOtherParam,includeItemDelegate);

A et B ne marche pas part des bibliothèques, peut-il être fait?

Était-ce utile?

La solution

prédicat est intégré et signale aussi l'intention:

ClassA.FetchItems(int someParameter, Predicate<string> filter);

Autres conseils

Qu'en est-il Func<string,bool>?

Il est également possible de passer la prédicats comme lambda

class A
{
    static public IEnumerable<string> FetchItems(int max, Predicate<string> filter)
    {
        var l = new List<string>() {"test", "fest", "pest", "häst"};
        return l.FindAll(filter).Take(max);
    }
}

comme ceci

var res = A.FetchItems(2, s => s.EndsWith("est"));
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top