public IEmergency Create(List <string> args) { var typeOfEmergencyToString = args[0].Replace("Register", Preffix); var name = args[1]; EmergencyLevel emergencyLevel = (EmergencyLevel)Enum.Parse(typeof(EmergencyLevel), args[2]); var registrationTimeToString = args[3]; var lastParameter = args[4]; Type typeOfRegistrationTime = typeof(RegistrationTime); var constructorOfRegistrationTime = typeOfRegistrationTime.GetConstructor(new[] { typeof(string) }); var instanceOfRegistrationTime = constructorOfRegistrationTime.Invoke(new object[] { registrationTimeToString }); var allTypes = Assembly.GetExecutingAssembly().GetTypes(); var emergencyType = allTypes.FirstOrDefault(t => t.Name == typeOfEmergencyToString); var constructorOfEmergency = emergencyType.GetConstructors().FirstOrDefault(); var argsToPass = new object[args.Count - 1]; argsToPass[0] = name; argsToPass[1] = emergencyLevel; argsToPass[2] = instanceOfRegistrationTime; if (typeOfEmergencyToString == "PublicHealthEmergency" || typeOfEmergencyToString == "PublicPropertyEmergency") { argsToPass[3] = int.Parse(lastParameter); } else { argsToPass[3] = lastParameter; } return((IEmergency)constructorOfEmergency.Invoke(argsToPass)); }
public PublicPropertyEmergency(string description, EmergencyLevel emergencyLevel, RegistrationTime registrationTime, int propertyDamage) : base(description, emergencyLevel, registrationTime) { this.PropertyDamage = propertyDamage; }
public PublicOrderEmergency(string description, EmergencyLevel emergencyLevel, RegistrationTime registrationTime, string status) : base(description, emergencyLevel, registrationTime) { this.Status = status; }
public OrderEmergency(string description, EmergencyLevel emergencyLevel, IRegistrationTime registrationTime, bool isSpecialCase) : base(description, emergencyLevel, registrationTime) { this.IsSpecialCase = isSpecialCase; }
protected BaseEmergency(string description, EmergencyLevel emergencyLevel, RegistrationTime registrationTime) { this.Description = description; this.emergencyLevel = emergencyLevel; this.registrationTime = registrationTime; }
public PublicHealthEmergency(string description, EmergencyLevel emergencyLevel, RegistrationTime registrationTime, int casualties) : base(description, emergencyLevel, registrationTime) { this.Casualties = casualties; }
public PublicHealthEmergency(string description, EmergencyLevel emergencyLevel, IRegistrationTime registrationTime, int numberOfCasualties) : base(description, emergencyLevel, registrationTime) { this.NumberOfCasualties = numberOfCasualties; }