using System.Collections.Generic; namespace Pinwheel { public class AwardsEngine { private readonly IList rules; public IEnumerable Rules { get { return rules; } } public AwardsEngine() : this(new List()) { } public AwardsEngine(IRulesService rulesService) : this(rulesService.GetRules()) { } public AwardsEngine(IEnumerable initialRules) { rules = new List(initialRules); } public virtual void Execute(AwardContext context) { foreach (var rule in Rules) rule.Execute(context); } public virtual void Register(IAwardRule rule) { rules.Add(rule); } } }