public void ExecuteCommand(IAnimalCentre centre, string commandType, string[] commandArgs) { var command = typeof(Models.AnimalCentre).GetMethod(commandType); if (command == null) { throw new ArgumentException("Invalid command!"); } List <object> commandParams = new List <object>(); foreach (var commandArg in commandArgs) { if (int.TryParse(commandArg, out int value)) { commandParams.Add(value); } else { commandParams.Add(commandArg); } } var res = command.Invoke(centre, commandParams.ToArray()); Console.WriteLine(res); }
public Engine() { this.reader = new Reader(); this.writer = new Writer(); this.animalCentre = new AnimalCentre(); }
public Engine( IAnimalCentre animalCentre, ICommandParser commandParser, IDataReader dataReader, IDataWriter dataWriter) { this.animalCentre = animalCentre; this.commandParser = commandParser; this.dataReader = dataReader; this.dataWriter = dataWriter; }
public string Read(IAnimalCentre animalCentre, string[] args) { string command = args[0]; string[] commandArgs = args.Skip(1).ToArray(); var animalCentreType = typeof(AnimalCentre); var method = animalCentreType.GetMethod(command); if (method == null) { throw new ArgumentException("Invalid command!"); } List <object> parameters = new List <object>(); foreach (var commandArg in commandArgs) { if (int.TryParse(commandArg, out int value)) { parameters.Add(value); } else { parameters.Add(commandArg); } } string result = string.Empty; try { result = (string)method.Invoke(animalCentre, parameters.ToArray()); } catch (TargetInvocationException tie) { result = tie.InnerException.Message; } return(result); }
public Engine() { this.animalCentre = new AnimalCentre(); }
public Engine(IAnimalCentre animalCentre) { this.animalCentre = animalCentre; }