void NamedItemList_AfterSet(object sender, SetEventArgs <T> e) { if (_NameDict.ContainsKey(e.OldItem.Name)) { _NameDict.Remove(e.OldItem.Name); } ; _NameDict.Add(e.NewItem.Name, e.NewItem); e.OldItem.BeforeNameChange -= new EventHandler <NameChangeEventArgs>(Item_BeforeNameChange); e.OldItem.AfterNameChanged -= new EventHandler <NameChangeEventArgs>(Item_AfterNameChanged); e.NewItem.BeforeNameChange += new EventHandler <NameChangeEventArgs>(Item_BeforeNameChange); e.NewItem.AfterNameChanged += new EventHandler <NameChangeEventArgs>(Item_AfterNameChanged); }
void NamedItemList_BeforeSet(object sender, SetEventArgs <T> e) { if (!EqualityComparer <T> .Default.Equals(e.NewItem, e.OldItem)) { if (!_NameDict.ContainsKey(e.NewItem.Name)) { //Name of the new item does not exist. } else if (_NameDict.ContainsKey(e.NewItem.Name) && EqualityComparer <T> .Default.Equals(e.OldItem, _NameDict[e.NewItem.Name])) { //Name does exist, but its the name of the old item. } else { throw new ArgumentException("Cant set the INamedItem. The name {0} does already exist in the collection.".Build(e.NewItem.Name)); } } }