Skip to content

cjwang/DotNetRuleEngine

 
 

Repository files navigation

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.

A few reasons use DotNetRuleEngine

  • 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

Example

Create Rule(s)

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;
    }
}

Invoke Rule(s)

Order order = new Order { Id = 1, Total = 79.99 };

// Pass order instance to RuleEngine.
var ruleResults = RuleEngine<Order>.GetInstance(order)
    .ApplyRules(new QualifiesForFreeShipping())
    .Execute()
Model used as an example
public class Order
{
    public int Id { get; set; }
    public decimal Total { get; set; }
    public bool FreeShipping { get; set; }
}

About

DotNetRuleEngine

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 100.0%