コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: Engine.cs プロジェクト: vesy53/SoftUni
        public Engine()
        {
            this.reader = new Reader();
            this.writer = new Writer();

            this.animalCentre = new AnimalCentre();
        }
コード例 #3
0
 public Engine(
     IAnimalCentre animalCentre,
     ICommandParser commandParser,
     IDataReader dataReader,
     IDataWriter dataWriter)
 {
     this.animalCentre  = animalCentre;
     this.commandParser = commandParser;
     this.dataReader    = dataReader;
     this.dataWriter    = dataWriter;
 }
コード例 #4
0
        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);
        }
コード例 #5
0
 public Engine()
 {
     this.animalCentre = new AnimalCentre();
 }
コード例 #6
0
ファイル: Engine.cs プロジェクト: TodoresteG/CSharp-OOP
 public Engine(IAnimalCentre animalCentre)
 {
     this.animalCentre = animalCentre;
 }