//================================================================================ protected void BaseInsert(int index, Tejas.Collections.IItem item) { // Declare string key = item.Key; // Validate if (key != null && _dictionary.ContainsKey(key)) { throw new Tejas.Collections.DuplicateKeyException(key); } // Notify (before) OnItemInserting(index, (T)item); // Add to hashtable if key is supplied if (key != null) { _dictionary.Add(key, (T)item); } // Add handlers item.KeyChanging += _itemKeyChangingEventHandler; item.KeyChanged += _itemKeyChangedEventHandler; // Add to list _List.Insert(index, (T)item); // Notify (after) OnItemInserted(index, (T)item); }
//================================================================================ #endregion #region Methods - private //================================================================================ private void RemoveItem(int index, T item) { // Declare Tejas.Collections.IItem iItem = (Tejas.Collections.IItem)item; string key = iItem.Key; // Notify (before) this.OnItemRemoving(index, item); // Remove if (key != null) { _dictionary.Remove(key); } _List.Remove(item); // Remove handlers iItem.KeyChanging -= _itemKeyChangingEventHandler; iItem.KeyChanged -= _itemKeyChangedEventHandler; // Notify (after) this.OnItemRemoved(index, item); }
//================================================================================ protected int BaseAdd(Tejas.Collections.IItem item) { BaseInsert(_List.Count, item); return(_List.Count - 1); }