現在、Lambdasと連携して非常に優れた処理を実行するFluent実装がたくさんあります。脳を包み込んで、こういうものを作り始めたいのですが、脳が理解できる説明がまだ見つかりません。
PersonValidatorのこの簡単な例を考えてみましょう
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を拡張する拡張メソッドを作成できます。
ですから、前半と後半は問題があるようですが、どうやってまとめたらいいのかわかりません。
意味のある説明を探しています...「入手」したいのですが。:)