C# Functional Validations
When we are validating our model, we tend to write validations like this:
public bool IsValid(Product product){
if(string.IsNullOrEmpty(product.Name))
return false;
if(product.Price<=0)
return false;
if(product.Category==null)
return false;
}
This might look OK at first but if we have a complex model, and we need to add a lot of rules, this might get messy.
A better approach is the use of delegates and lambda expressions, to create a set of rules, and then see if our product can comply them all, lets see how can we do that.
public bool IsValid (Product product){
Func<Product,bool> rules = {
p => string.IsNullOrEmpty(p.Name),
p => p.Price <= 0,
p => p.Category == null
}
return rules.All( rule => !rule(product) );
}
In this case we have defined the same 3 rules, and are only returning true if none of the rules are true.
With this approach you can do complex validations and have a cleaner code while you are at it.
Written by Luis Tellez
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Delegates
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#