Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Presentation / System / Activities / Presentation / DictionaryItemsCollection.cs / 1305376 / DictionaryItemsCollection.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.Presentation { using System.Collections.Generic; using System.Collections.ObjectModel; using System.Runtime; class DictionaryItemsCollection: Collection > { IDictionary dictionary; public DictionaryItemsCollection(object dictionary) { this.dictionary = dictionary as IDictionary ; Fx.Assert(this.dictionary != null, "dictionary should be instantiated"); foreach (KeyValuePair kvpair in this.dictionary) { ModelItemKeyValuePair item = new ModelItemKeyValuePair (kvpair.Key, kvpair.Value); item.collection = this; base.InsertItem(this.Count, item); } } internal void PostUpdateKey() { this.UpdateDictionary(); } internal void PreUpdateKey(TKey oldKey, TKey newKey) { this.dictionary.Remove(oldKey); if (this.dictionary.ContainsKey(newKey)) { this.UpdateDictionary(); throw FxTrace.Exception.AsError(new ArgumentException(SR.DuplicateKey)); } } internal void UpdateValue(TKey key, TValue value) { this.dictionary[key] = value; } protected override void ClearItems() { this.dictionary.Clear(); base.ClearItems(); } protected override void InsertItem(int index, ModelItemKeyValuePair item) { if (item == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("item")); } if (this.dictionary.ContainsKey(item.Key)) { throw FxTrace.Exception.AsError(new ArgumentException(SR.DuplicateKey)); } item.collection = this; base.InsertItem(index, item); this.UpdateDictionary(); } protected override void RemoveItem(int index) { ModelItemKeyValuePair item = this[index]; Fx.Assert(item != null, "Item should not be null."); this.dictionary.Remove(item.Key); base.RemoveItem(index); } protected override void SetItem(int index, ModelItemKeyValuePair item) { if (item == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("item")); } item.collection = this; ModelItemKeyValuePair oldItem = this[index]; Fx.Assert(oldItem != null, "Item should not be null."); this.PreUpdateKey(oldItem.Key, item.Key); base.SetItem(index, item); this.PostUpdateKey(); } void UpdateDictionary() { // Make sure the order of KVPairs in the dictionary is the same as the order of items in the collection this.dictionary.Clear(); foreach (ModelItemKeyValuePair item in this) { this.dictionary.Add(new KeyValuePair (item.Key, item.Value)); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.Presentation { using System.Collections.Generic; using System.Collections.ObjectModel; using System.Runtime; class DictionaryItemsCollection : Collection > { IDictionary dictionary; public DictionaryItemsCollection(object dictionary) { this.dictionary = dictionary as IDictionary ; Fx.Assert(this.dictionary != null, "dictionary should be instantiated"); foreach (KeyValuePair kvpair in this.dictionary) { ModelItemKeyValuePair item = new ModelItemKeyValuePair (kvpair.Key, kvpair.Value); item.collection = this; base.InsertItem(this.Count, item); } } internal void PostUpdateKey() { this.UpdateDictionary(); } internal void PreUpdateKey(TKey oldKey, TKey newKey) { this.dictionary.Remove(oldKey); if (this.dictionary.ContainsKey(newKey)) { this.UpdateDictionary(); throw FxTrace.Exception.AsError(new ArgumentException(SR.DuplicateKey)); } } internal void UpdateValue(TKey key, TValue value) { this.dictionary[key] = value; } protected override void ClearItems() { this.dictionary.Clear(); base.ClearItems(); } protected override void InsertItem(int index, ModelItemKeyValuePair item) { if (item == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("item")); } if (this.dictionary.ContainsKey(item.Key)) { throw FxTrace.Exception.AsError(new ArgumentException(SR.DuplicateKey)); } item.collection = this; base.InsertItem(index, item); this.UpdateDictionary(); } protected override void RemoveItem(int index) { ModelItemKeyValuePair item = this[index]; Fx.Assert(item != null, "Item should not be null."); this.dictionary.Remove(item.Key); base.RemoveItem(index); } protected override void SetItem(int index, ModelItemKeyValuePair item) { if (item == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("item")); } item.collection = this; ModelItemKeyValuePair oldItem = this[index]; Fx.Assert(oldItem != null, "Item should not be null."); this.PreUpdateKey(oldItem.Key, item.Key); base.SetItem(index, item); this.PostUpdateKey(); } void UpdateDictionary() { // Make sure the order of KVPairs in the dictionary is the same as the order of items in the collection this.dictionary.Clear(); foreach (ModelItemKeyValuePair item in this) { this.dictionary.Add(new KeyValuePair (item.Key, item.Value)); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Rotation3DKeyFrameCollection.cs
- Select.cs
- AutomationElementCollection.cs
- DiscreteKeyFrames.cs
- EdmPropertyAttribute.cs
- Animatable.cs
- FrugalList.cs
- BaseCollection.cs
- CodeNamespace.cs
- DataGridViewCheckBoxCell.cs
- ListDictionary.cs
- GridViewRowEventArgs.cs
- CharStorage.cs
- RenderingBiasValidation.cs
- XmlSchemaSimpleTypeList.cs
- GreenMethods.cs
- AVElementHelper.cs
- UpdateTranslator.cs
- RootContext.cs
- DynamicActivityProperty.cs
- InfiniteTimeSpanConverter.cs
- TextServicesManager.cs
- _RegBlobWebProxyDataBuilder.cs
- DetailsViewPageEventArgs.cs
- WindowsFormsSynchronizationContext.cs
- StatusBarPanel.cs
- SimpleFieldTemplateFactory.cs
- ProxyWebPart.cs
- XComponentModel.cs
- assemblycache.cs
- SchemaTypeEmitter.cs
- SolidColorBrush.cs
- TextRenderer.cs
- ManipulationDevice.cs
- FixedSOMLineRanges.cs
- Binding.cs
- StateWorkerRequest.cs
- ListViewItem.cs
- Mutex.cs
- DefaultPropertyAttribute.cs
- KeyEvent.cs
- ViewBox.cs
- RegistryKey.cs
- IODescriptionAttribute.cs
- IdentityHolder.cs
- FormViewCommandEventArgs.cs
- Item.cs
- WindowsAltTab.cs
- DictionaryEntry.cs
- List.cs
- ValidatingReaderNodeData.cs
- ConfigurationManagerHelper.cs
- UserPreferenceChangingEventArgs.cs
- mda.cs
- TransportContext.cs
- Container.cs
- MimeBasePart.cs
- CompModHelpers.cs
- DbDeleteCommandTree.cs
- TypeDescriptionProvider.cs
- SymbolType.cs
- IdentityValidationException.cs
- KeyValueConfigurationElement.cs
- ApplicationContext.cs
- altserialization.cs
- XhtmlBasicCalendarAdapter.cs
- ExpressionValueEditor.cs
- SynchronizationValidator.cs
- ImportException.cs
- TreeWalker.cs
- ImageFormatConverter.cs
- SocketException.cs
- VerificationException.cs
- ExpressionStringBuilder.cs
- DataStorage.cs
- TcpWorkerProcess.cs
- Stacktrace.cs
- ServiceObjectContainer.cs
- EditingContext.cs
- BreakRecordTable.cs
- MediaContext.cs
- DataRecordInternal.cs
- RefreshPropertiesAttribute.cs
- SecurityCriticalDataForSet.cs
- CompileXomlTask.cs
- StatusBarAutomationPeer.cs
- TypeExtensions.cs
- QuotedStringWriteStateInfo.cs
- Directory.cs
- ChannelSinkStacks.cs
- Visitors.cs
- SqlFlattener.cs
- WindowsListBox.cs
- PagerSettings.cs
- WMICapabilities.cs
- IndexerNameAttribute.cs
- Control.cs
- XmlWrappingWriter.cs
- SourceInterpreter.cs
- Span.cs