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
- ByteRangeDownloader.cs
- HMACSHA1.cs
- DragEvent.cs
- CredentialCache.cs
- TablePattern.cs
- EncryptedPackage.cs
- DiscoveryDocumentLinksPattern.cs
- InstanceKeyCollisionException.cs
- CompositeActivityMarkupSerializer.cs
- OleDbDataReader.cs
- EncoderExceptionFallback.cs
- DateTimeFormat.cs
- BrowserDefinitionCollection.cs
- SkipStoryboardToFill.cs
- XmlSiteMapProvider.cs
- WindowsGrip.cs
- BaseCAMarshaler.cs
- DeploymentSectionCache.cs
- ScrollItemPattern.cs
- NegationPusher.cs
- controlskin.cs
- XmlMembersMapping.cs
- DataGridTableCollection.cs
- TabPanel.cs
- HopperCache.cs
- FontDriver.cs
- FlowNode.cs
- DataGridViewTopRowAccessibleObject.cs
- ActivityValidator.cs
- WebBrowserProgressChangedEventHandler.cs
- HtmlInputRadioButton.cs
- CodeDomSerializationProvider.cs
- ExtensionsSection.cs
- Configuration.cs
- ComponentRenameEvent.cs
- CaseInsensitiveComparer.cs
- AddingNewEventArgs.cs
- BinaryObjectReader.cs
- AttributedMetaModel.cs
- TimelineClockCollection.cs
- CellQuery.cs
- ItemAutomationPeer.cs
- FrameworkReadOnlyPropertyMetadata.cs
- ClockGroup.cs
- Matrix.cs
- VectorValueSerializer.cs
- ProfileEventArgs.cs
- SafeProcessHandle.cs
- Decimal.cs
- MDIClient.cs
- ThemeInfoAttribute.cs
- RequestQueue.cs
- ConfigPathUtility.cs
- ScriptingAuthenticationServiceSection.cs
- SubclassTypeValidatorAttribute.cs
- PermissionRequestEvidence.cs
- PopupRootAutomationPeer.cs
- ValueChangedEventManager.cs
- CustomErrorsSectionWrapper.cs
- TwoPhaseCommit.cs
- ListenerSingletonConnectionReader.cs
- List.cs
- SqlWebEventProvider.cs
- FilterEventArgs.cs
- DiscoveryMessageSequence.cs
- QuaternionKeyFrameCollection.cs
- MediaElement.cs
- ConfigurationPropertyAttribute.cs
- FunctionMappingTranslator.cs
- LicenseProviderAttribute.cs
- XmlTypeAttribute.cs
- EdmProviderManifest.cs
- ReachIDocumentPaginatorSerializer.cs
- SHA1.cs
- GenericWebPart.cs
- RequestTimeoutManager.cs
- TrackingParticipant.cs
- Expression.cs
- DirtyTextRange.cs
- NonSerializedAttribute.cs
- TypeName.cs
- ApplicationInterop.cs
- ReachFixedDocumentSerializerAsync.cs
- ITextView.cs
- EntityConnectionStringBuilder.cs
- InternalBufferOverflowException.cs
- EmptyElement.cs
- MemberCollection.cs
- FormsAuthenticationUserCollection.cs
- ComplexTypeEmitter.cs
- ScriptingWebServicesSectionGroup.cs
- GenerateTemporaryAssemblyTask.cs
- XmlMemberMapping.cs
- XmlDeclaration.cs
- LoadGrammarCompletedEventArgs.cs
- FixedNode.cs
- PageResolution.cs
- SamlAudienceRestrictionCondition.cs
- NonBatchDirectoryCompiler.cs
- ContainerControlDesigner.cs