/// <summary> /// Метод Remove отвечает за удаление указанного в параметрах элемента /// </summary> /// <param name="el">Удаляемый элемент</param> /// <returns>Возвращает true если элемент был удален и false в обратном случае</returns> public bool Remove(T el) { //Переменной col типа List присваевается ссылка на массив collection преобразованный в коллекцию List List <T> col = collection.ToList(); try { //Проверка, содержит ли коллекция указанный элемент if (col.Contains(el)) { //Если событию удаления указанного элемента задан обработчик if (OnRemove != null) { //Создается экземпляр класса eventArgs содержащий удаляемый элемент var eventArgs = new Remover <T>(el); //Вызов функции обработчика OnRemove(this, eventArgs); } //Если операция удаления элемента возвращает 'true' if (col.Remove(el)) { ///Переменной collection присваивается ссылка на коллекцию col преобразованную в массив collection = col.ToArray(); return(true); } else { return(false); } } else { //Если указанного элемента в коллекции нет, то выбрасывается исключение throw new ArgumentException($"Элемент {el} отсутствует в коллекции"); } } catch (ArgumentException ex) { //Создается экземпляр класса eventArgs содержащий удаляемый элемент и сообщение исключения var eventArgs = new RemoverException <T>(el, ex.Message); //Вызов функции обработчика OnRemoverException(this, eventArgs); return(false); } }
/// <summary> /// Метод RemoveException вызывается при возникновении исключения при удалении определенного элемента из коллекции /// </summary> /// <param name="sender">Объект, в контексте которого вызывается функция</param> /// <param name="remover">Объект хранящий сообщени о возникновении исключения</param> private static void RemoveException(object sender, RemoverException <string> remover) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine($"{remover.Message}"); Console.ResetColor(); }