Lambdaには非常にきれいなことをするためのFluentの実装がたくさんあります。私はそれらの周りに私の脳をラップしたいので、これらのもののいくつかを作成することができますが、私はまだ私の脳が理解する説明を見つける必要があります。Lambda Func <>とFluent
私はこのように私のバリデータのメソッドを使用して作業し、このすべての部分を取得するために管理している人バリ
public class PersonValidator : IValidator<Person>
{
public PersonValidator()
{
AddRule(p => p.FirstName).CannotBeNull().CannotBeBlank();
AddRule(p => p.LastName).CannotBeNull().CannotBeBlank();
}
public List<ValidationResult> Validate(Person p)
{
// pseudo...
apply all rules specified in constructor, return results
}
}
のこの単純な例を考えてみましょう...
public ValidationResult<T,TProp> AddRule<T,TProp>(Func<T,TProp> property)
{
... not sure what to do here. This method gives me the ability to use the lambda
... for specifying which properties i want to validate
}
私はCannotBeNullとCannotBeEmptyの目的でIValidatorを拡張する拡張メソッドを作成できます。
私は問題の前半と後半を持っているようですが、どうやってそれらを結びつけるのか分かりません。
意味のある説明を探しています...私は「取得」したいと思います。 :)
あなたの例では、意味がありません、あなたが追加ルール()。CannotBeNull()。CannotBeBlank()あなたがあなたのバリデーションルールにそれらのルールを追加して後で適用したいと言っていますか? –
はい、正確です。私はAddRuleを使用して、クラスの与えられたプロパティに対してバリデーションを適用する任意の数の連鎖したメソッドを使用できるようにしたいと考えています。 私の挑戦は、私が "AddRule"の中で何をすべきかわからないということです。私はバリデーターにそれらを残す必要があることを知っていますが、私はそれを行う方法を知らないのですか? – ctorx