private static async Task Main(string[] args) { try { Console.WriteLine("Hello World!"); // Step 1: Input ElectricityUnitModel electricityUnitModel = new ElectricityUnitModel() { Unit = 200 }; SurchargeCalculationContext surchargeCalculationContext = new SurchargeCalculationContext(); // Step 2 : surcharge Calculation ElectricitySurchargeModel electricitySurchargeModel = await surchargeCalculationContext.GetSurchargeCalculationAsync(electricityUnitModel); // Step 3: Display surchare Calculation Console.WriteLine($"Unit : {electricityUnitModel?.Unit}"); Console.WriteLine($"Surcharge Amount : {electricitySurchargeModel?.SurchargeAmount}"); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public async Task <ElectricitySurchargeModel> GetSurchargeCalculationAsync(ElectricityUnitModel electricityUnitModel) { await initializingTask; return (await ( keyValuePairsUnit.FirstOrDefault((keyValuePair) => keyValuePair.Key.Invoke(electricityUnitModel)) ).Value.SurchargeCalculationAsync(electricityUnitModel)); }
Task <ElectricitySurchargeModel> IUnitSurchargeCalculation.SurchargeCalculationAsync(ElectricityUnitModel electricityUnitModel) { return(Task.Run(() => { return new ElectricitySurchargeModel() { SurchargeAmount = electricityUnitModel?.Unit * surchargeUnit }; })); }