C# 泛型参数委托?
我对新的Action/Func/Variance/convariance有些模糊,这可能就是我需要的 我想要的是能够将委托作为参数传递给方法,该方法接受字符串并返回bool。问题是我不能使用类型化委托或接口,因为它将在不共享库的不同库中使用,并且这两个库都将由第三方调用 因此,一般来说,我希望通过委托的输入和返回类型来推断委托 所以它会像:C# 泛型参数委托?,c#,delegates,covariance,variance,C#,Delegates,Covariance,Variance,我对新的Action/Func/Variance/convariance有些模糊,这可能就是我需要的 我想要的是能够将委托作为参数传递给方法,该方法接受字符串并返回bool。问题是我不能使用类型化委托或接口,因为它将在不共享库的不同库中使用,并且这两个库都将由第三方调用 因此,一般来说,我希望通过委托的输入和返回类型来推断委托 所以它会像: delegate bool IncludeItemDelegate(string item); ClassA.FetchItems(int somePar
delegate bool IncludeItemDelegate(string item);
ClassA.FetchItems(int someParameter,includeItemDelegate);
ClassB.FetchItems(int someParameter,string someOtherParam,includeItemDelegate);
如果A和B不共享任何库,可以这样做吗?那么
Func
如何?谓词是内置的,并且还表示意图:
ClassA.FetchItems(int someParameter, Predicate<string> filter);
ClassA.FetchItems(int-someParameter,谓词过滤器);
也可以将谓词作为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);
}
}
是的,这比Func好。啊,也许有点深奥,但似乎合适
var res = A.FetchItems(2, s => s.EndsWith("est"));