创建和过滤预定义的func列表

时间:2012-05-08 13:06:02

标签: c# design-patterns

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

我这样做是为了使API更加严格地遵循开放/关闭原则,其中Validator可以根据需要采用更多验证类型而无需修改验证器。

1 个答案:

答案 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)

依此类推......我认为那就是你所期待的。