現在有許多Fluent實現與Lambdas一起完成非常整齊的工作。我想圍繞它把自己的大腦包裹起來,這樣我就可以開始創造這些東西了,但是我還沒有找到我的大腦理解的解釋。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的擴展方法。
所以看起來我有上半年和下半年的問題,但我不知道如何把它們放在一起。
尋找一個有意義的解釋...我想「得到它」。 :)
你的例子是沒有意義的,當你做AddRule()。CannotBeNull()。CannotBeBlank()你說你想要這些規則添加到您的驗證規則,後來申請呢? – 2009-08-21 03:48:48
是的,確切地說。我希望能夠使用AddRule,然後使用任何數量的鏈接方法對類的給定屬性應用驗證。 我的挑戰是我不知道在「AddRule」裏面做什麼。我知道我需要堅持那些驗證者,但我不知道該怎麼做? – ctorx 2009-08-21 15:18:42