protected override void RemoveItem(int index) { ModelItemKeyValuePair <TKey, TValue> item = this[index]; Fx.Assert(item != null, "Item should not be null."); if (ShouldUpdateDictionary) { this.dictionary.Remove(item.Key); } base.RemoveItem(index); }
public DictionaryItemsCollection(object dictionary) { this.ShouldUpdateDictionary = true; this.dictionary = dictionary as IDictionary <TKey, TValue>; Fx.Assert(this.dictionary != null, "dictionary should be instantiated"); foreach (KeyValuePair <TKey, TValue> kvpair in this.dictionary) { ModelItemKeyValuePair <TKey, TValue> item = new ModelItemKeyValuePair <TKey, TValue>(kvpair.Key, kvpair.Value); item.collection = this; base.InsertItem(this.Count, item); } }
protected override void SetItem(int index, ModelItemKeyValuePair <TKey, TValue> item) { if (item == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("item")); } item.collection = this; ModelItemKeyValuePair <TKey, TValue> oldItem = this[index]; Fx.Assert(oldItem != null, "Item should not be null."); this.PreUpdateKey(oldItem.Key, item.Key); base.SetItem(index, item); this.PostUpdateKey(); }
protected override void InsertItem(int index, ModelItemKeyValuePair <TKey, TValue> item) { if (item == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("item")); } if (ShouldUpdateDictionary && this.dictionary.ContainsKey(item.Key)) { throw FxTrace.Exception.AsError(new ArgumentException(SR.DuplicateKey)); } item.collection = this; base.InsertItem(index, item); this.UpdateDictionary(); }