public virtual bool TryAssignMember(int i_NumOfField, string i_InputStr, out string o_ErrorMsg) { bool isMemberValid = false; int indexOfWheelBasedOnField = i_NumOfField; o_ErrorMsg = null; i_NumOfField = GetIndexOfWheelToValidate(i_NumOfField, ref indexOfWheelBasedOnField); switch (i_NumOfField) { case 0: isMemberValid = IsModelValid(i_InputStr); if (isMemberValid == true) { Model = i_InputStr; } else { o_ErrorMsg = "The model must contain letters or digits only"; } break; case 1: isMemberValid = float.TryParse(i_InputStr, out float amountOfMaterial) == true?r_Engine.IsAmountsOfSourcePowerMaterialValid(amountOfMaterial) : false; if (isMemberValid == true) { MyEngine.InitializeAmountOfEnergy(amountOfMaterial, this); } else { o_ErrorMsg = string.Format( "The value must be positive and below {0}", r_Engine.GetAmountOfSourcePowerMaterialPossible().ToString()); } break; case 2: isMemberValid = Wheels[indexOfWheelBasedOnField].IsManufacturerValid(i_InputStr); if (isMemberValid == true) { Wheels[indexOfWheelBasedOnField].Manufacturor = i_InputStr; } else { o_ErrorMsg = "The value must contain letter only"; } break; case 3: isMemberValid = float.TryParse(i_InputStr, out float o_AirPressure) == true ? Wheels[indexOfWheelBasedOnField].IsAirPressureIsValid(o_AirPressure) : false; if (isMemberValid == true) { Wheels[indexOfWheelBasedOnField].Inflate(o_AirPressure); } else { o_ErrorMsg = string.Format( "The value must be positive and below {0}", Wheels[indexOfWheelBasedOnField].GetAmountOfPressurePossibleToInflate().ToString()); } break; } return(isMemberValid); }