我对新的Action / Func / Variance / CoVariance的东西有点模糊,这可能是我需要的。
我想要的是能够将委托作为参数传递给方法,该方法接受一个字符串并返回一个bool。问题是我不能使用类型化的委托或接口,因为它将在不共享库的不同库中使用,并且两者都将被第三个调用。
因此,一般来说,我希望通过它的输入和返回类型来推断委托。
所以它会像:
delegate bool IncludeItemDelegate(string item);
ClassA.FetchItems(int someParameter,includeItemDelegate);
ClassB.FetchItems(int someParameter,string someOtherParam,includeItemDelegate);
如果A和B不共享任何库,可以这样做吗?
答案 0 :(得分:7)
Func<string,bool>
怎么样?
答案 1 :(得分:6)
Predicate是内置的,也表示意图:
ClassA.FetchItems(int someParameter, Predicate<string> filter);
答案 2 :(得分:0)
也可以将谓词作为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"));