0

我有一个名为 ValidationMethods 的类中的 Func 列表。我通过将它们传递给 Validator.Validate(Func) 在 Validator 类中使用它们。我想知道是否有一种方法可以包装每个函数,以便我可以重载 Validate 以获取 IEnumerable 并指定要根据某个枚举值过滤的 where 类。

我这样做是为了使 API 更紧密地遵循打开/关闭原则,其中验证器可以在需要时接受更多验证类型,而无需修改验证器。

4

1 回答 1

2

我希望我能正确理解你。你想要一个枚举来过滤函数:

enum Category {
  F1,
  F2
}

然后是每个函数的包装器:

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)

等等...我希望这就是你所期望的。

于 2012-05-08T13:21:13.290 回答