2

我对新的 Action/Func/Variance/CoVariance 东西有点模糊,这可能是我需要的。

我想要的是能够将委托作为参数传递给一个方法,该方法接受一个字符串并返回一个布尔值。问题是我不能使用类型化委托或接口,因为它将在不共享库的不同库中使用,并且两者都将被第三方调用。

所以总的来说,我希望委托通过它的输入和返回类型来推断。

所以它会像:

delegate bool IncludeItemDelegate(string item);

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

A和B不共享任何库的地方,可以做到吗?

4

3 回答 3

7

怎么样Func<string,bool>

于 2010-10-26T11:27:12.653 回答
6

谓词是内置的,也表示意图:

ClassA.FetchItems(int someParameter, Predicate<string> filter);
于 2010-10-26T11:32:01.347 回答
0

也可以将 Predicate 作为 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);
    }
}

像这样

var res = A.FetchItems(2, s => s.EndsWith("est"));
于 2010-10-26T11:48:56.013 回答