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
- Dictionary.cs
- MenuItemStyle.cs
- ApplicationContext.cs
- XmlElement.cs
- TypeLoadException.cs
- GlobalProxySelection.cs
- ScrollEvent.cs
- NumericUpDown.cs
- CodeDelegateInvokeExpression.cs
- FixedPosition.cs
- SafePEFileHandle.cs
- EntityDataSourceContainerNameItem.cs
- EpmSourceTree.cs
- SrgsRuleRef.cs
- SkipStoryboardToFill.cs
- TraversalRequest.cs
- _UriSyntax.cs
- CacheEntry.cs
- DispatcherProcessingDisabled.cs
- XmlSchemaSimpleType.cs
- InstanceCreationEditor.cs
- TextDecorations.cs
- SelectionProcessor.cs
- Constants.cs
- SqlFunctions.cs
- ComplexLine.cs
- JsonReader.cs
- ModuleBuilder.cs
- ControlTemplate.cs
- WebPartEditorApplyVerb.cs
- LinkUtilities.cs
- GeneralTransformCollection.cs
- StateMachineSubscriptionManager.cs
- SmiTypedGetterSetter.cs
- ByteFacetDescriptionElement.cs
- TagMapCollection.cs
- DictionarySectionHandler.cs
- CharStorage.cs
- HttpDictionary.cs
- Trustee.cs
- ServiceMetadataExtension.cs
- EntityFunctions.cs
- InheritanceContextChangedEventManager.cs
- Header.cs
- WebHeaderCollection.cs
- RelationshipNavigation.cs
- UnsafeNetInfoNativeMethods.cs
- XmlHierarchicalEnumerable.cs
- DataBindingsDialog.cs
- DataSpaceManager.cs
- WinCategoryAttribute.cs
- DirectoryNotFoundException.cs
- Propagator.cs
- PageBuildProvider.cs
- RuntimeConfig.cs
- errorpatternmatcher.cs
- TrailingSpaceComparer.cs
- ItemsControl.cs
- AssociationType.cs
- MutexSecurity.cs
- ExpressionBuilderContext.cs
- NamespaceDisplay.xaml.cs
- MasterPageBuildProvider.cs
- COM2IDispatchConverter.cs
- HTTPRemotingHandler.cs
- ReaderWriterLock.cs
- TableItemStyle.cs
- ComponentChangingEvent.cs
- ConnectionConsumerAttribute.cs
- OdbcConnectionHandle.cs
- OdbcFactory.cs
- TrackingMemoryStreamFactory.cs
- PrintDocument.cs
- FactoryMaker.cs
- PageCatalogPartDesigner.cs
- XmlNamedNodeMap.cs
- TransactionFlowElement.cs
- ChangeBlockUndoRecord.cs
- CompilerCollection.cs
- CurrentChangedEventManager.cs
- CompositeCollection.cs
- PolyLineSegmentFigureLogic.cs
- ClrPerspective.cs
- ClaimTypeRequirement.cs
- TcpTransportSecurityElement.cs
- Size.cs
- VariableQuery.cs
- Hash.cs
- NullableBoolConverter.cs
- BlurBitmapEffect.cs
- SecUtil.cs
- ConfigViewGenerator.cs
- WorkflowRuntimeEndpoint.cs
- SoapCodeExporter.cs
- ImageDesigner.cs
- MasterPageCodeDomTreeGenerator.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- TreeView.cs
- EventMappingSettings.cs
- XPathMultyIterator.cs