0

ValidationMethods というクラスに Func のリストがあります。これらを Validator.Validate(Func) に渡すことにより、Validator クラスで使用します。Validate をオーバーロードして IEnumerable を取得し、enum 値に基づいてフィルタリングする where クラスを指定できるように、各 func をラップする方法があるかどうか疑問に思っていました。

これは、バリデーターを変更せずに、必要に応じてバリデーターがより多くの検証タイプを取り込むことができるオープン/クローズの原則に 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 に答える