Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- basecomparevalidator.cs
- MultipleViewPattern.cs
- SmtpCommands.cs
- DiagnosticsConfiguration.cs
- MethodBuilder.cs
- ITextView.cs
- FontInfo.cs
- ObsoleteAttribute.cs
- CoTaskMemUnicodeSafeHandle.cs
- DataGridViewUtilities.cs
- SafeFileMappingHandle.cs
- Membership.cs
- XPathDocumentIterator.cs
- Hex.cs
- StrokeSerializer.cs
- XmlSchemaValidator.cs
- StylusButtonEventArgs.cs
- UriScheme.cs
- SafeRightsManagementEnvironmentHandle.cs
- ConditionalBranch.cs
- RuntimeHandles.cs
- QuaternionRotation3D.cs
- UrlMappingCollection.cs
- ObjectPersistData.cs
- ModelVisual3D.cs
- ViewPort3D.cs
- WebPartZoneBase.cs
- UpdatePanelTriggerCollection.cs
- SchemaConstraints.cs
- ModelFactory.cs
- AsyncInvokeContext.cs
- WindowsListViewItemCheckBox.cs
- ErrorActivity.cs
- XmlStreamStore.cs
- TextOnlyOutput.cs
- WmlValidatorAdapter.cs
- Calendar.cs
- ClientSideProviderDescription.cs
- ThreadLocal.cs
- RegexBoyerMoore.cs
- TreeNodeStyle.cs
- NeutralResourcesLanguageAttribute.cs
- CodeArrayCreateExpression.cs
- EmptyEnumerator.cs
- StylusTip.cs
- LambdaSerializationException.cs
- QueryExpr.cs
- SqlNodeAnnotation.cs
- DataPagerField.cs
- OleDbStruct.cs
- TransportSecurityBindingElement.cs
- DefaultAssemblyResolver.cs
- BackoffTimeoutHelper.cs
- ToolStripItemImageRenderEventArgs.cs
- GuidelineCollection.cs
- DBParameter.cs
- GridViewDeleteEventArgs.cs
- WinEventQueueItem.cs
- EnvelopedSignatureTransform.cs
- BitmapEffectDrawingContextState.cs
- ValidationEventArgs.cs
- MailMessage.cs
- BitmapEncoder.cs
- httpapplicationstate.cs
- SerialErrors.cs
- Unit.cs
- X509Certificate2Collection.cs
- NavigationWindowAutomationPeer.cs
- storepermissionattribute.cs
- RecordBuilder.cs
- GPRECT.cs
- DataGridViewButtonColumn.cs
- TextRunCacheImp.cs
- Scanner.cs
- FileLogRecordStream.cs
- WindowsClaimSet.cs
- SmiSettersStream.cs
- RuleSettingsCollection.cs
- XmlRawWriter.cs
- ConfigXmlReader.cs
- DataGridItemEventArgs.cs
- FormsAuthenticationEventArgs.cs
- HScrollBar.cs
- SecondaryIndexDefinition.cs
- Schema.cs
- InstalledFontCollection.cs
- WeakReadOnlyCollection.cs
- Geometry.cs
- BindingExpressionBase.cs
- SafeNativeMethods.cs
- ToolboxSnapDragDropEventArgs.cs
- EntityDataSourceChangingEventArgs.cs
- streamingZipPartStream.cs
- _SecureChannel.cs
- NameScopePropertyAttribute.cs
- UnsafeNativeMethods.cs
- SchemaDeclBase.cs
- CharacterString.cs
- DesignerTransaction.cs
- ConfigurationSectionGroupCollection.cs