Пример #1
0
        private static void MakeOperation(BasicCalculator calculator, double a, double b, double c, Dictionary <int, MethodInfo> availableOperations, int operation)
        {
            object[] args = null;

            switch (availableOperations[operation].GetParameters().Length)
            {
            case 0:
                args = new object[0];
                break;

            case 1:
                args = new object[] { a };
                break;

            case 2:
                args = new object[] { a, b };
                break;

            case 3:
                args = new object[] { a, b, c };
                break;
            }

            Console.WriteLine(availableOperations[operation].Invoke(calculator, args));
        }
Пример #2
0
        private static BasicCalculator PickCalculator(ref Dictionary <int, MethodInfo> availableOperations)
        {
            Console.WriteLine("Choose the calculator you want to use: \n Press 1 for Calculator \n Press 2 for Special Calculator");
            int             option     = int.Parse(Console.ReadLine());
            BasicCalculator calculator = null;

            bool optionChosen = true;

            while (optionChosen)
            {
                if (option == 1)
                {
                    calculator   = new Calculator();
                    optionChosen = false;
                }
                else if (option == 2)
                {
                    calculator   = new SpecialCalculator();
                    optionChosen = false;
                }
                else
                {
                    Console.WriteLine("Invalid option! Choose again");
                }
            }

            availableOperations = GetOperations(calculator);

            return(calculator);
        }
Пример #3
0
        static void Main(string[] args)
        {
            Dictionary <int, MethodInfo> availableOperations = null;
            BasicCalculator calculator = PickCalculator(ref availableOperations);

            double a, b, c;

            (a, b, c) = SetNumberForOperations();

            ShowTypedActions();

            bool exitWhileLoop = false;

            while (!exitWhileLoop)
            {
                string typedString = Console.ReadLine();

                if (string.IsNullOrWhiteSpace(typedString))
                {
                    continue;
                }

                if (ChosenAction(typedString, new string[] { "C", "(C)" }))
                {
                    calculator = PickCalculator(ref availableOperations);
                    ShowOperations(availableOperations);
                    continue;
                }

                if (ChosenAction(typedString, new string[] { "HELP", "(HELP)" }))
                {
                    ShowOperations(availableOperations);
                    continue;
                }

                if (ChosenAction(typedString, new string[] { "QUIT", "(QUIT)" }))
                {
                    exitWhileLoop = true;
                    continue;
                }

                if (ChosenAction(typedString, new string[] { "CHANGE", "(CHANGE)" }))
                {
                    (a, b, c) = SetNumberForOperations();
                    continue;
                }

                MakeOperation(calculator, a, b, c, availableOperations, int.Parse(typedString));

                Console.WriteLine("Try another operation!");
            }

            Console.WriteLine("To close the application press any key!");
            Console.ReadKey();
        }
Пример #4
0
        private static Dictionary <int, MethodInfo> GetOperations(BasicCalculator calculator)
        {
            int i = 1;

            Dictionary <int, MethodInfo> keyValuePairs = new Dictionary <int, MethodInfo>();

            foreach (MethodInfo property in calculator.GetType().GetMethods())
            {
                keyValuePairs.Add(i, property);
                i++;
            }

            return(keyValuePairs);
        }