Esempio n. 1
0
        /// <summary>
        /// Метод Insert вставляет в коллекцию элемент под указанным индексом
        /// </summary>
        /// <param name="index">Индекс, под которым в коллекцию будет вставляться элемент</param>
        /// <param name="el">Вставляемый элемент</param>
        public void Insert(int index, T el)
        {
            //Переменной col типа List присваевается ссылка на массив collection преобразованный в коллекцию List
            List <T> col = collection.ToList();

            //Если событию вставки присвоен обработчик
            if (OnInsert != null)
            {
                //Создается экземпляр класса Inserter, ссодержащий индекс и вставляемый элемент
                var eventArgs = new Inserter <T>(index, el);

                //Вызов функции обработчика
                OnInsert(this, eventArgs);

                //Если свойству объекта Cancel присвоено значение 'true'
                if (eventArgs.Cancel)
                {
                    string message = $"Элемент {el} не был вставлен на позицию {index}";

                    //Создается экземпляр класса InsertCancel, ссодержащий сообщение с индексом и вставляемым в коллекцию элементом
                    var evArgs = new InserterCancel(message);

                    //Вызов функции обработчика события отмены вставки элемента на определенный индекс
                    OnInsertCancel(this, evArgs);

                    return;
                }
            }

            //Если функция обработчик не была задана, то происходит вставка элемента в коллекцию
            col.Insert(index, el);

            ///Переменной collection присваивается ссылка на коллекцию col преобразованную в массив
            collection = col.ToArray();
        }
Esempio n. 2
0
 /// <summary>
 /// Метод InsertCancel вызывается при возникновении события - отмены вставки элемента на орпеделенную позицию
 /// </summary>
 /// <param name="sender">Объект, в контексте которого вызывается функция</param>
 /// <param name="inserter">Объект хранящий сообщение о вставляемом элементе и его индексе</param>
 private static void InsertCancel(object sender, InserterCancel inserter)
 {
     Console.ForegroundColor = ConsoleColor.Red;
     Console.WriteLine(inserter.Message);
     Console.ResetColor();
 }