How to implement a rule engine?
This snippet compiles the Rules into fast executable code (using Expression trees) and does not need any complicated switch statements: (Edit : full working example with generic method) public Func<User, bool> CompileRule(Rule r) { var paramUser = Expression.Parameter(typeof(User)); Expression expr = BuildExpr(r, paramUser); // build a lambda function User->bool and compile it return Expression.Lambda<Func<User, bool>>(expr, … Read more