static void ActionsJournal(ShowJournal show, Journal collect1, Journal collect2) { Console.WriteLine(JournalMenu); int numCollect = CheckInt(); if (numCollect < 1 || numCollect > 2) { throw new IndexOutOfRangeException("Выберете коллекцию 1 или 2!"); } else if (numCollect == 1) { show(collect1); } else { show(collect2); } }
static void Main(string[] args) { Console.OutputEncoding = Encoding.Default; MyNewCollection OneCollect = new MyNewCollection(); MyNewCollection TwoCollect = new MyNewCollection(); Journal oneJournal = new Journal(); Journal twoJournal = new Journal(); // создаем возможные события для объекта типа MyNewCollection и подписываем на событие объект класса Journal // подписка на события первого журнала: // добавление\удаление и изменение элементов 1 коллекции OneCollect.CollectionCountChanges += new MyCollectionHandler(oneJournal.CollectionCountChanged); OneCollect.CollectionReferenceChanges += new MyCollectionHandler(oneJournal.CollectionReferenceChanged); // подписка на события второго журнала: // изменение элементов 1 и 2 коллекции OneCollect.CollectionReferenceChanges += new MyCollectionHandler(twoJournal.CollectionReferenceChanged); TwoCollect.CollectionReferenceChanges += new MyCollectionHandler(twoJournal.CollectionReferenceChanged); AddRemoveShow act; ShowJournal show; bool flag = false; while (!flag) { try { Console.Clear(); Console.Write(MAINMENU); int choise = CheckInt(); switch (choise) { case 1: act = new AddRemoveShow(AddElemInCollection); ChoiseCollectionForAct(act, OneCollect, TwoCollect); Console.WriteLine("Элементы успешно добавлены"); break; case 2: act = new AddRemoveShow(RemoveInCollection); ChoiseCollectionForAct(act, OneCollect, TwoCollect); Console.WriteLine("Элементы успешно удалены"); break; case 3: act = new AddRemoveShow(ChangeItemCollection); ChoiseCollectionForAct(act, OneCollect, TwoCollect); Console.WriteLine("Элемент успешно изменен"); ENTER(); break; case 4: act = new AddRemoveShow(ShowCollection); ChoiseCollectionForAct(act, OneCollect, TwoCollect); ENTER(); break; case 5: show = new ShowJournal(ShowJ); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Журнал событий: "); Console.ForegroundColor = ConsoleColor.DarkYellow; ActionsJournal(show, oneJournal, twoJournal); Console.ResetColor(); ENTER(); break; case 6: show = new ShowJournal(Clear); ActionsJournal(show, oneJournal, twoJournal); Console.WriteLine("Журнал отчищен!"); ENTER(); break; case 7: act = new AddRemoveShow(x => x.Clear()); ChoiseCollectionForAct(act, OneCollect, TwoCollect); Console.WriteLine("Коллекция отчищена"); break; case 8: flag = !flag; break; default: Console.WriteLine("Неопознанное значение!"); ENTER(); break; } } catch (Exception e) { Console.WriteLine(e.Message); ENTER(); } } }