When we need to add logic rules with simplicity, we have the possibility of implement basic validations based on IoC principles
In this post we check the implementation of a ready-made generic validator
The interface is based on add boolean expressions
The implementation collects the rules
METHOD SOFTWARE ® 2021
In this post we check the implementation of a ready-made generic validator
public interface IValidator<M>
{
IValidator<M> AddRule(Expression<Func<M, bool>> rule);
bool CheckRules(M item);
}
The interface is based on add boolean expressions
public class Validator<M> : IValidator<M>
{
private List<Expression<Func<M, bool>>> Rules { get; set; } = new();
public IValidator<M> AddRule(Expression<Func<M, bool>> rule)
{
this.Rules.Add(rule);
return this;
}
public bool CheckRules(M item)
{
return this.Rules.TrueForAll(rule => rule.Compile()(item));
}
}
The implementation collects the rules
static void Main(string[] args)
{
Console.WriteLine("Test Validator");
Demo demo = new()
{
Kata = 200,
Title = "Test"
};
IValidator<Demo> demoValidator = new Validator<Demo>();
demoValidator.AddRule(d => d.Kata > 100)
.AddRule(d => !string.IsNullOrEmpty(d.Title));
_ = demoValidator.CheckRules(demo);
}
METHOD SOFTWARE ® 2021