public void PerformActivity() { Console.WriteLine("Please select the pet you wish to update"); for (int i = 0; i < PetShelters.DefaultShelter.AllPets.Count; i++) { Console.WriteLine("Enter [" + i + "] for pet " + PetShelters.DefaultShelter.AllPets[i].Name); } String petNumberInput = Console.ReadLine(); int petNumber = -1; int petActivity = -1; bool isValid = int.TryParse(petNumberInput, out petNumber) && petNumber >= 0 && petNumber < PetShelters.DefaultShelter.AllPets.Count; if (!isValid) { Console.WriteLine("You entered an invalid value: " + petNumberInput); } else { Pet myPet = this.AllPets[petNumber]; Console.WriteLine("Based on the pet selected you can perform the following activities...."); //MethodInfo[] methodInfos = typeof(PetOrganic).GetMethods(); MethodInfo[] methodInfos = myPet.GetType().GetMethods(); for (int i = 0; i < methodInfos.Length; i++) { Console.WriteLine("Enter: [" + i + "] for activity: " + methodInfos[i].Name); } //foreach (MethodInfo methodInfo in methodInfos) // Console.WriteLine("Activity: " + methodInfo); Console.WriteLine("Please enter your selection"); petNumberInput = Console.ReadLine(); petActivity = int.Parse(petNumberInput); methodInfos[petActivity].Invoke(myPet, new object[] { }); } }