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
- TemplateBindingExtensionConverter.cs
- Table.cs
- VisualTreeUtils.cs
- TileModeValidation.cs
- DirectoryNotFoundException.cs
- EventManager.cs
- BehaviorEditorPart.cs
- ControlPersister.cs
- DataGridHeaderBorder.cs
- ObjectViewQueryResultData.cs
- MiniModule.cs
- TreeView.cs
- CollaborationHelperFunctions.cs
- PageParserFilter.cs
- VoiceInfo.cs
- ListDictionary.cs
- __ComObject.cs
- MemberBinding.cs
- WebPartEditorOkVerb.cs
- DateTimeValueSerializerContext.cs
- ControlAdapter.cs
- DataSourceControlBuilder.cs
- JsonServiceDocumentSerializer.cs
- NativeActivityMetadata.cs
- StrongNameKeyPair.cs
- Label.cs
- RC2.cs
- IIS7ConfigurationLoader.cs
- ExcCanonicalXml.cs
- AddIn.cs
- XmlDataSourceView.cs
- DbConnectionPoolGroupProviderInfo.cs
- HwndHostAutomationPeer.cs
- AnnotationComponentChooser.cs
- PtsContext.cs
- KnownBoxes.cs
- TextServicesDisplayAttributePropertyRanges.cs
- SymbolEqualComparer.cs
- ZoneMembershipCondition.cs
- ErrorHandler.cs
- AdRotator.cs
- ScaleTransform.cs
- SchemaType.cs
- AnimationException.cs
- DataIdProcessor.cs
- ResetableIterator.cs
- OleServicesContext.cs
- XmlSchemaComplexType.cs
- Rights.cs
- SmiGettersStream.cs
- DataControlFieldHeaderCell.cs
- TreeViewImageKeyConverter.cs
- XmlDictionaryReaderQuotas.cs
- ReachFixedPageSerializerAsync.cs
- ReliableSession.cs
- EventDriven.cs
- Utilities.cs
- ConfigUtil.cs
- Fonts.cs
- MenuRendererStandards.cs
- XmlSerializableWriter.cs
- HttpListenerPrefixCollection.cs
- DataViewManager.cs
- SchemaNamespaceManager.cs
- XmlUTF8TextReader.cs
- CurrentChangingEventManager.cs
- TrustManagerPromptUI.cs
- CultureTable.cs
- DrawingAttributes.cs
- RootProjectionNode.cs
- BasicSecurityProfileVersion.cs
- HttpStreams.cs
- ReplyAdapterChannelListener.cs
- TextReader.cs
- TextServicesCompartment.cs
- ParameterExpression.cs
- Gdiplus.cs
- Root.cs
- XmlNodeComparer.cs
- ExpressionBindingCollection.cs
- TableRowsCollectionEditor.cs
- TypeConverterHelper.cs
- WebControlAdapter.cs
- ApplicationManager.cs
- WeakReferenceList.cs
- CacheDependency.cs
- ParameterElementCollection.cs
- OverflowException.cs
- XPathBinder.cs
- XmlLoader.cs
- InkCanvasFeedbackAdorner.cs
- SafeThemeHandle.cs
- HuffModule.cs
- VideoDrawing.cs
- XDRSchema.cs
- configsystem.cs
- Memoizer.cs
- SkinBuilder.cs
- DataGridViewCellEventArgs.cs
- CqlLexer.cs