// The 'ICustomerPriceCalculatorFactory' is being injected via the constructor since we are using an IoC container that supports ctor injections only.
 // With a more sophisticated IoC container it would be best to inject this service in the 'IAmountCalculator.Calculate()'.
 public InvoiceBuilder(
     ICurrencyRateConverter converter,
     IPriceCalculatorFactory calculatorFactory)
 {
     _invoice           = new Invoice();
     _converter         = converter;
     _calculatorFactory = calculatorFactory;
 }
Esempio n. 2
0
        public CompanyPriceCalculator(ICurrencyRateConverter converter)
            : base(converter)
        {

        }
Esempio n. 3
0
 public PriceCalculator(ICurrencyRateConverter converter)
 {
     this.converter = converter;
 }
Esempio n. 4
0
        public IndividualPriceCalculator(ICurrencyRateConverter converter)
            : base(converter)
        {

        }
 internal static IDictionary <CustomerType, Func <IPriceCalculator> > GetPriceCalculators(ICurrencyRateConverter converter) =>
 new Dictionary <CustomerType, Func <IPriceCalculator> >()
 {
     { CustomerType.Individual, () => new IndividualPriceCalculator(converter) },
     { CustomerType.Company, () => new CompanyPriceCalculator(converter) }
 };