Пример #1
0
        //================================================================================
        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);
        }
Пример #2
0
        //================================================================================
        #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);
        }
Пример #3
0
 //================================================================================
 protected int BaseAdd(Tejas.Collections.IItem item)
 {
     BaseInsert(_List.Count, item);
     return(_List.Count - 1);
 }