public override string ToString() { var descriptions = AttributeHelper.GetAttributes <DescriptionAttribute>(this); return(descriptions.FirstOrDefault()?.Description ?? "Безымянный"); }
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); }