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
- SubMenuStyle.cs
- DocumentSchemaValidator.cs
- EntityDataSourceMemberPath.cs
- EnumDataContract.cs
- StringFormat.cs
- ClientConfigurationHost.cs
- StorageBasedPackageProperties.cs
- NotifyCollectionChangedEventArgs.cs
- SpeechDetectedEventArgs.cs
- CodeDelegateCreateExpression.cs
- AttributeUsageAttribute.cs
- ArgumentOutOfRangeException.cs
- CodeLinePragma.cs
- UpDownBase.cs
- ConfigXmlCDataSection.cs
- Slider.cs
- SqlClientFactory.cs
- TransformerTypeCollection.cs
- XPathDocumentBuilder.cs
- AllowedAudienceUriElement.cs
- SqlNotificationRequest.cs
- CheckBoxRenderer.cs
- ServiceBusyException.cs
- DllNotFoundException.cs
- CompareInfo.cs
- SmtpCommands.cs
- LogPolicy.cs
- FontStyle.cs
- StateMachineTimers.cs
- InvokeHandlers.cs
- CodePageUtils.cs
- TemplateXamlTreeBuilder.cs
- ServiceAuthorizationElement.cs
- NodeFunctions.cs
- ItemPager.cs
- documentsequencetextpointer.cs
- DispatchChannelSink.cs
- EntityContainerEntitySet.cs
- HtmlContainerControl.cs
- ThemeDirectoryCompiler.cs
- SizeKeyFrameCollection.cs
- StylusSystemGestureEventArgs.cs
- StylusPointProperty.cs
- SqlIdentifier.cs
- WebPageTraceListener.cs
- HtmlContainerControl.cs
- DecoderFallbackWithFailureFlag.cs
- XmlCountingReader.cs
- ValueOfAction.cs
- Evaluator.cs
- PropertyMetadata.cs
- ComponentCollection.cs
- Semaphore.cs
- FormsAuthenticationUser.cs
- DbMetaDataColumnNames.cs
- RijndaelManaged.cs
- HttpCapabilitiesEvaluator.cs
- Maps.cs
- SafeMILHandle.cs
- ToolStripPanelRenderEventArgs.cs
- EncryptedData.cs
- EnumType.cs
- ProfileSettingsCollection.cs
- ManipulationLogic.cs
- Propagator.ExtentPlaceholderCreator.cs
- DPTypeDescriptorContext.cs
- XappLauncher.cs
- SQLBinary.cs
- SafeFileHandle.cs
- AdditionalEntityFunctions.cs
- XamlTemplateSerializer.cs
- TagPrefixAttribute.cs
- DictionaryManager.cs
- RsaEndpointIdentity.cs
- ButtonBaseAutomationPeer.cs
- UriParserTemplates.cs
- AutoResizedEvent.cs
- UserPreferenceChangedEventArgs.cs
- Tracer.cs
- HtmlInputRadioButton.cs
- ResourcePropertyMemberCodeDomSerializer.cs
- HMACSHA1.cs
- ContextMenuAutomationPeer.cs
- EncodingTable.cs
- EndOfStreamException.cs
- Accessible.cs
- DurationConverter.cs
- WebPartVerb.cs
- CharacterMetricsDictionary.cs
- DataGridViewRow.cs
- WebConfigurationHostFileChange.cs
- LogAppendAsyncResult.cs
- Application.cs
- Variable.cs
- ConfigurationSection.cs
- TreeNodeBindingCollection.cs
- EventMappingSettings.cs
- BooleanExpr.cs
- documentsequencetextview.cs
- UnsafeNativeMethods.cs