Istnieje wiele płynnych implementacji, które teraz działają z Lambdas, aby robić rzeczy całkiem zadbane. Chciałbym otoczyć mój mózg, aby móc zacząć tworzyć niektóre z tych rzeczy, ale muszę jeszcze znaleźć wytłumaczenie, które mój mózg rozumie.Lambda Func <> i Fluent
Rozważmy prosty przykład osoby 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
}
}
udało mi się dostać część to wszystko działa za pomocą metody na moim Walidatora jak to ...
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
}
I może następnie tworzyć metody rozszerzające, które rozszerzają IValidator na potrzeby CannotBeNull i CannotBeEmpty.
Wygląda na to, że mam pierwszą połowę i drugą połowę problemu, ale nie jestem pewien, jak je połączyć.
Szukasz sensownego wyjaśnienia ... Chciałbym "dostać to". :)
Twój przykład nie ma sensu, kiedy robisz AddRule(). CannotBeNull(). CannotBeBlank() mówisz chcesz dodać te zasady do swoich reguł sprawdzania poprawności i zastosować je później? –
Tak, właśnie. Chcę móc używać AddRule, a następnie dowolnej liczby połączonych metod, które stosują sprawdzanie poprawności dla danej właściwości klasy. Moim wyzwaniem jest to, że nie wiem, co zrobić w "AddRule". Wiem, że muszę utrzymywać te w walidatorze, ale nie wiem jak to zrobić? – ctorx