我在名为ValidationMethods的类中有一个Func列表。我通过将它们传递给Validator.Validate(Func)在Validator类中使用它们。我想知道是否有一种方法来包装每个func,以便我可以重载Validate来获取IEnumerable并根据某些枚举值指定where类进行过滤。
我这样做是为了使API更加严格地遵循开放/关闭原则,其中Validator可以根据需要采用更多验证类型而无需修改验证器。
答案 0 :(得分:2)
我希望我能正确理解你。你想要枚举来过滤函数:
enum Category {
F1,
F2
}
然后是每个func的包装器:
class FWrap<TIn, TOut> //depending on your arities
{
public Func<TIn, TOut> Fnc {get; set;}
public Category Cat {get; set;}
//some constructor and stuff
}
之后,应该没有任何问题:
IEnumerable<FWrap<t1,t2>> funcs = getFuncs();
validators = funcs.Where(f => f.Cat == Category.F1)
依此类推......我认为那就是你所期待的。