public void FillInEnergyToVehicle( string i_LicenseNumber, float i_AmountToAdd, out bool o_IsSucceeded, FuelVehicle.eFuelType?i_FuelType = null) { try { o_IsSucceeded = false; bool isExist = r_VehicleList.TryGetValue(i_LicenseNumber, out VehicleInShop toRefuel); if (isExist) { if (toRefuel.m_VehicleInShop is FuelVehicle && i_FuelType != null) { FuelVehicle fuelVehicle = toRefuel.m_VehicleInShop as FuelVehicle; if (fuelVehicle != null) { fuelVehicle.Refueling(i_AmountToAdd, (FuelVehicle.eFuelType)i_FuelType); o_IsSucceeded = true; } } else if (toRefuel.m_VehicleInShop is ElectricVehicle) { ElectricVehicle electricVehicle = toRefuel.m_VehicleInShop as ElectricVehicle; if (electricVehicle != null) { electricVehicle.Loading(i_AmountToAdd / 60); o_IsSucceeded = true; } } } else { o_IsSucceeded = false; throw new ArgumentException(k_IsNotExistError); } } catch (Exception ex) { throw new Exception("Fail to fill in the energy in the vehicle", ex); } }