现在有许多Fluent实现可以与Lambdas一起完成非常整洁的工作.我想把我的大脑包裹起来,这样我就可以开始创造一些这样的东西了,但我还没有找到一个我的大脑能够理解的解释.
考虑这个简单的Person Validator示例
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 } }
我已经成功地使用我的Validator上的方法来完成所有这些工作的一部分…
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 }
然后我可以创建扩展方法,扩展IValidator以实现CannotBeNull和CannotBeEmpty.
所以我似乎有问题的上半部分和后半部分,但我不确定如何将它们组合在一起.
寻找有意义的解释…我想“得到它”.