/// <inheritdoc/> public IRuleBuilder <TContext, TSubject> Then(Action <TSubject> thenClause) { if (_rule.WhenClause == null) { throw new InvalidRuleException(Messages.WhenClauseMustPrecedeThenClause); } _rule.AddThenClause(ruleContext => thenClause(( TSubject )ruleContext.Subject)); return(this); }
public void Rule_WithThenClauses_ThenClausesAreCallable() { var customer = new Customer (); var ruleEngineContext = new RuleEngineContext<Customer> ( customer ); var rule = new Rule ( "Name" ); Action<IRuleEngineContext> thenClause1 = e => ( ( Customer )e.Subject ).Age = 20; rule.AddThenClause ( thenClause1 ); Action<IRuleEngineContext> thenClause2 = e => ( ( Customer )e.Subject ).Age++; rule.AddThenClause ( thenClause2 ); foreach ( var clause in rule.ThenClauses ) { clause ( ruleEngineContext ); } Assert.AreEqual ( 21, customer.Age ); }