internal void GetInfo(FieldInfo i_Info, ref object io_ChoiseToReturn) { string fixName; fixName = GarageData.FixNameToPrint(i_Info.Name); string toAskUser = string.Format(@"Please Enter {0} :", fixName); if (i_Info.FieldType.IsEnum) { io_ChoiseToReturn = getEnumInfo(toAskUser, i_Info.FieldType.GetEnumNames()); } else if (i_Info.FieldType == typeof(float?) || i_Info.FieldType == typeof(int?)) { io_ChoiseToReturn = getNumericInfo(toAskUser); } else if (i_Info.FieldType == typeof(bool?)) { io_ChoiseToReturn = getBoolInfo(toAskUser); } else ////Gets Any Info From User-the object class wil handle validation. To support futer members typs. { io_ChoiseToReturn = Console.ReadLine(); } }
private object getEnumInfo(string i_toAskUser, string[] i_EnumString) { int numOfOption = 1, choise = 0; bool goodInput = false; string userChoise; i_toAskUser += string.Format("\n The Options Are: "); foreach (string enumName in i_EnumString) { string fixedName = GarageData.FixNameToPrint(enumName); i_toAskUser += string.Format("\n {0}. {1} ", numOfOption, fixedName); numOfOption++; } Console.WriteLine(i_toAskUser); while (!goodInput) { try { userChoise = getOnlyDigitsString(); choise = int.Parse(userChoise); Validation.IsInRange(choise, 0, numOfOption - 1); goodInput = true; } catch (Exception ex) { AnnounceError(ex); Console.WriteLine(@"Please Enter Again: "); } } return(choise); }