public static Vehicle GenerateVehicle(Enums.eVehicleType i_VehicleType, Dictionary <string, object> i_Properties) { Vehicle vehicle = null; List <Wheel> wheels = buildWheels(i_Properties.Values); switch (i_VehicleType) { case Enums.eVehicleType.FuelMotorcycle: vehicle = createFuelMotorcycle(i_Properties, wheels); break; case Enums.eVehicleType.ElectricMotorcycle: vehicle = createElectricMotorcycle(i_Properties, wheels); break; case Enums.eVehicleType.FuelCar: vehicle = createFuelCar(i_Properties, wheels); break; case Enums.eVehicleType.ElectricCar: vehicle = createElectricCar(i_Properties, wheels); break; case Enums.eVehicleType.FuelTruck: vehicle = createFuelTruck(i_Properties, wheels); break; } return(vehicle); }
// Add new vehicle by type to the vehicle list, if the vehicle all ready exist, change his status to InRepair public void AddNewVehicle(string i_LicenseNumber, Enums.eVehicleType i_VehicleKind) { Vehicle NewVehicle; if (m_ListOfVehicles.ContainsKey(i_LicenseNumber)) { m_ListOfVehicles[i_LicenseNumber].VehicleStatus = Enums.eVehicleStatus.InRepair; throw new Exception("Vehicle all ready exist, status changed to in repair"); } else { NewVehicle = VehicleCreator.CreateNewVehicle(i_LicenseNumber, i_VehicleKind); m_ListOfVehicles.Add(i_LicenseNumber, NewVehicle); } }
// Create new Vehicle object depends in the Vehicle type, return new vehicle //Polimorphism? public static Vehicle CreateNewVehicle(string i_LicenseNumber, Enums.eVehicleType i_VehicleKind) { Vehicle o_NewVehicle = null; //remove null later switch (i_VehicleKind) { case Enums.eVehicleType.FuelCar: { // = new Car(i_LicenseNumber, new FuelEngine()); break; } case Enums.eVehicleType.ElectricCar: { //o_NewVehicle = new Car(i_LicenseNumber, new ElectricEngine()); break; } case Enums.eVehicleType.FuelMotorcycle: { //o_NewVehicle = new Motorcycle(i_LicenseNumber, new FuelEngine()); break; } case Enums.eVehicleType.ElectricMotorcycle: { // o_NewVehicle = new Motorcycle(i_LicenseNumber, new ElectricEngine()); break; } case Enums.eVehicleType.Truck: { // o_NewVehicle = new Truck(i_LicenseNumber, new FuelEngine()); break; } default: { o_NewVehicle = null; break; } } return(o_NewVehicle); }
public object CreateGarageObject(object[] i_Parameters, Type i_Type, Type i_VehicleType) { object obj; Enums.eVehicleType vehicleType = (Enums.eVehicleType)Enum.Parse(typeof(Enums.eVehicleType), i_VehicleType.Name); if (i_Type == typeof(Wheel)) { float maxEnergy = (float)VehiclesDefualtConfigurations.sr_DefaultDictionary[vehicleType]["Maximum Air Pressure"]; ConstructorInfo ci = i_Type.GetConstructors()[0]; i_Parameters[i_Parameters.Length - 1] = maxEnergy; obj = new Wheel((string)i_Parameters[0], (float)i_Parameters[1], (float)i_Parameters[2]); } if (i_Type == typeof(ElectricEngine)) { float maxEnergy = (float)VehiclesDefualtConfigurations.sr_DefaultDictionary[vehicleType]["Maximum Energy"]; ConstructorInfo ci = i_Type.GetConstructors()[0]; i_Parameters[i_Parameters.Length - 1] = maxEnergy; obj = new ElectricEngine((float)i_Parameters[0], (float)i_Parameters[1]); } else if (i_Type == typeof(FuelEngine)) { Enums.eFuelTypes fuelType = (Enums.eFuelTypes)VehiclesDefualtConfigurations.sr_DefaultDictionary[vehicleType]["Fuel Type"]; float maxEnergy = (float)VehiclesDefualtConfigurations.sr_DefaultDictionary[vehicleType]["Maximum Energy"]; ConstructorInfo ci = i_Type.GetConstructors()[0]; i_Parameters[i_Parameters.Length - 2] = maxEnergy; i_Parameters[i_Parameters.Length - 1] = fuelType; obj = new FuelEngine((float)i_Parameters[0], (float)i_Parameters[1], (Enums.eFuelTypes)i_Parameters[2]); } else { ConstructorInfo ci = i_Type.GetConstructors()[0]; obj = ci.Invoke(i_Parameters); } return(obj); }
public Dictionary <string, Type> GetEmptyDictionary(Type i_Type) { Dictionary <string, Type> vehicleConfiguration = new Dictionary <string, Type>(); ConstructorInfo constructorTypeInfo = i_Type.GetConstructors()[0]; Enums.eVehicleType vehicleType = (Enums.eVehicleType)Enum.Parse(typeof(Enums.eVehicleType), i_Type.Name); foreach (ParameterInfo instanceParameter in constructorTypeInfo.GetParameters()) { if (instanceParameter.ParameterType == typeof(List <Wheel>)) { for (int i = 0; i < (int)VehiclesDefualtConfigurations.sr_DefaultDictionary[vehicleType]["Number Of Wheels"]; i++) { vehicleConfiguration.Add(string.Format("Wheel {0}", i + 1), typeof(Wheel)); } } else { vehicleConfiguration.Add(instanceParameter.Name, instanceParameter.ParameterType); } } return(vehicleConfiguration); }