public OrderTest() { _bikes = LoadJsonFile <Dictionary <string, Bike> >("testBikes.json"); var rules = LoadJsonFile <List <Discount <Line> > >("testRules.json"); _discountRulesEngine = new DiscountRulesEngine <Line>(rules); }
public decimal CalculateDiscountPercentage(Customer customer) { // Use c# Reflection to create rule instances of the existing rules in this // assembley and return into a rules IEnumerable for processing // Nb - rules should be stateless var ruleType = typeof(IDiscountRule); IEnumerable <IDiscountRule> rules = this.GetType().Assembly.GetTypes() .Where(p => ruleType.IsAssignableFrom(p) && !p.IsInterface) .Select(r => Activator.CreateInstance(r) as IDiscountRule); var engine = new DiscountRulesEngine(rules); return(engine.CalculateDiscountPercentage(customer)); }
public Order(string company, DiscountRulesEngine <Line> discountRulesEngine) { Company = company; _discountRulesEngine = discountRulesEngine; }