Example #1
0
        public override string ToString()
        {
            var descriptions = AttributeHelper.GetAttributes <DescriptionAttribute>(this);

            return(descriptions.FirstOrDefault()?.Description ?? "Безымянный");
        }
Example #2
0
        public virtual void DoSomeWork()
        {
            var methods = AttributeHelper.GetMethods <DescriptionAttribute>(this);

            if (methods.Count() <= 0)
            {
                Console.WriteLine("Удовлетворяющих условию задач не найдено");
                return;
            }

            do
            {
                Console.WriteLine();
                DisplayMenu(methods);

                var taskNumber = Console.ReadLine();

                var method = methods.FirstOrDefault(x => x.Name.ToUpper() == $"TASK{taskNumber}");

                if (method == null)
                {
                    Console.WriteLine($"Упс, похоже такого задания (\"{taskNumber}\") еще не задавали!");
                    Console.WriteLine();
                    continue;
                }

                var task       = method.GetCustomAttributes <DescriptionAttribute>().FirstOrDefault();
                var milestones = method.GetCustomAttributes <MilestoneAttribute>();

                Console.WriteLine("---");
                Console.WriteLine($"\t{task?.Description}:");

                var args = WaitForUserInput(milestones);

                object[] result = Invoke(method, args);

                // Выводим результат
                // Определяем формат вывода результата
                var milestone = milestones.FirstOrDefault(x => x.Milestone == MilestoneAttribute.Milestones.Output);

                if (milestone == null)
                {
                    continue;
                }

                if (milestone == null || result == null || result.Count() <= 0)
                {
                    Console.WriteLine("Вывод результата не определен");
                }

                string format = $"{milestone?.Description}";

                if (milestone.WriteTimestampToConsole)
                {
                    format += $" [время выполнения {{{result.Length - 1}:0.000}} мс]";
                }

                // Выводим
                Console.WriteLine(format, result);
            } while (Console.ReadKey().Key != ConsoleKey.Escape);
        }