DotNetRuleEngine allows you to write your code as series of rules to keep your code clean and structured. Supports both synchronous and asynchronous execution and it is S.O.L.I.D compliant.
- S.O.L.I.D
- Separation of Concern.
- Easy to maintain.
- Testable code.
- Encapsulates varying behavior. Such as business rules.
PM> Install-Package DotNetRuleEngine
Nuget package available at: DotNetRuleEngine
.NET Core Version available now! DotNetRuleEngine.Core
Get Started at: DotNetRuleEngine Wiki
Create a rule to update FreeShipping attribute if the amount is greater than $50.00
public class QualifiesForFreeShipping: Rule<Order>
{
public override IRuleResult Invoke()
{
// Order instance available through the model property.
if (Model.Total > 50.0m)
{
Model.FreeShipping = true;
}
return null;
}
}
Order order = new Order { Id = 1, Total = 79.99 };
// Pass order instance to RuleEngine.
var ruleResults = RuleEngine<Order>.GetInstance(order)
.ApplyRules(new QualifiesForFreeShipping())
.Execute()
public class Order
{
public int Id { get; set; }
public decimal Total { get; set; }
public bool FreeShipping { get; set; }
}