public CurrencyRateConverter(
     ILegacyCurrencyRateConverter legacyConverter,
     IDictionary <Currency, string> currencies)
 {
     _legacyConverter = legacyConverter;
     _currencies      = currencies;
 }
        /// <summary>
        /// Registers all components needed for a normal wash tunnel.
        /// The tunnel will wash a vehicle regardless if it is 'clean' or 'dirty'.
        /// </summary>
        public static IContainer AddWashTunnel(this IContainer container)
        {
            container.AddSingleton <IMotherboard, Motherboard>();
            container.AddSingleton <IMemory, RandomAccessMemory>();
            container.AddSingleton <IWashStepNotifier, WashStepNotifier>();

            container.AddTransient <IUserPanel, UserPanel>();
            container.AddTransient <IWashTunnel, WashTunnel>();

            ILegacyCurrencyRateConverter legacyConverter = LegacyCurrencyRateConverterProxy.Instance.Authenticate("solid-tunnel-00F1BDE0-AC18-452B-A628-B8FB0335DAB6");
            ICurrencyRateConverter       converter       = new CurrencyRateConverter(legacyConverter, ConfigMap.GetLegacyCurrencies());

            container.AddSingleton(() => converter);
            container.AddSingleton <IPriceCalculatorFactory>(() => new PriceCalculatorFactory(ConfigMap.GetPriceCalculators(converter)));

            container.AddTransient <IInvoiceBuilder, InvoiceBuilder>();
            container.AddTransient <ICustomWashProgramBuilder, CustomWashProgramBuilder>();
            container.AddSingleton <IWashProgramFactory>(() => new WashProgramFactory(ConfigMap.GetWashPrograms()));

            return(container);
        }