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
- DataRow.cs
- SoapClientMessage.cs
- HelpProvider.cs
- RijndaelManaged.cs
- FixedNode.cs
- PictureBox.cs
- WebScriptEnablingElement.cs
- XmlMemberMapping.cs
- ThaiBuddhistCalendar.cs
- RelationshipConverter.cs
- DataPagerFieldItem.cs
- ImageListStreamer.cs
- RegexCharClass.cs
- MappedMetaModel.cs
- Run.cs
- RealizationContext.cs
- EntityDesignerBuildProvider.cs
- SocketAddress.cs
- XmlNodeReader.cs
- UnmanagedMemoryStreamWrapper.cs
- ImageAnimator.cs
- ResourceContainer.cs
- ResourcePermissionBase.cs
- DynamicDocumentPaginator.cs
- SeekableReadStream.cs
- ArraySortHelper.cs
- EndpointIdentityExtension.cs
- NetworkStream.cs
- DesignerVerb.cs
- HttpApplicationFactory.cs
- InternalBufferManager.cs
- ComboBox.cs
- HashCryptoHandle.cs
- Grammar.cs
- SiteMapDataSource.cs
- TextReader.cs
- DbParameterCollectionHelper.cs
- AutomationPatternInfo.cs
- StringSorter.cs
- Form.cs
- LambdaCompiler.Binary.cs
- GridSplitter.cs
- SignedXml.cs
- TextElementAutomationPeer.cs
- NumericPagerField.cs
- MemberInfoSerializationHolder.cs
- OperationAbortedException.cs
- BezierSegment.cs
- ImageDrawing.cs
- MutexSecurity.cs
- InputLangChangeEvent.cs
- GAC.cs
- DataGridViewUtilities.cs
- GenericPrincipal.cs
- PartitionedDataSource.cs
- InstanceNameConverter.cs
- Point.cs
- ProxyWebPartConnectionCollection.cs
- AdornedElementPlaceholder.cs
- Page.cs
- AdditionalEntityFunctions.cs
- LabelAutomationPeer.cs
- DomNameTable.cs
- WindowsFormsHelpers.cs
- ItemsControl.cs
- BitmapEffectInput.cs
- DateTimeConstantAttribute.cs
- LassoHelper.cs
- ConstraintConverter.cs
- DeferredElementTreeState.cs
- ConfigurationLockCollection.cs
- SessionViewState.cs
- PerformanceCounterPermission.cs
- PointCollection.cs
- ReaderOutput.cs
- CompositeKey.cs
- ObfuscateAssemblyAttribute.cs
- TdsValueSetter.cs
- AgileSafeNativeMemoryHandle.cs
- IgnorePropertiesAttribute.cs
- Codec.cs
- ShimAsPublicXamlType.cs
- Transform.cs
- XsdDuration.cs
- ConfigurationValidatorAttribute.cs
- _UriSyntax.cs
- SafeMILHandle.cs
- ListViewItemEventArgs.cs
- BackgroundFormatInfo.cs
- JsonFormatReaderGenerator.cs
- DataSourceCollectionBase.cs
- EntityDataSourceReferenceGroup.cs
- WebPart.cs
- Style.cs
- SrgsToken.cs
- CounterCreationData.cs
- PrinterSettings.cs
- RelationshipType.cs
- Control.cs
- DesignerContextDescriptor.cs