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
- SaveFileDialog.cs
- RelationshipSet.cs
- SafeFileHandle.cs
- DocumentPage.cs
- LoginName.cs
- LinqDataSourceUpdateEventArgs.cs
- NullReferenceException.cs
- XmlFormatWriterGenerator.cs
- RequestDescription.cs
- MethodBody.cs
- TraceContext.cs
- MimeFormReflector.cs
- LicFileLicenseProvider.cs
- MessageBox.cs
- TextRenderingModeValidation.cs
- DocumentViewerConstants.cs
- EncodingTable.cs
- NavigationWindow.cs
- PartialTrustVisibleAssembliesSection.cs
- Vector3DKeyFrameCollection.cs
- XmlSortKeyAccumulator.cs
- ScrollItemPattern.cs
- XmlBinaryReader.cs
- TextTreeText.cs
- DataGridViewColumnHeaderCell.cs
- ApplicationException.cs
- QueryTask.cs
- ArgIterator.cs
- InheritanceAttribute.cs
- AttributeCallbackBuilder.cs
- Expr.cs
- RightsManagementEncryptionTransform.cs
- ConnectivityStatus.cs
- PassportIdentity.cs
- NavigationCommands.cs
- SqlFunctionAttribute.cs
- HttpListenerContext.cs
- ResourcesBuildProvider.cs
- SourceFileBuildProvider.cs
- EncryptedPackageFilter.cs
- SemanticResultValue.cs
- XmlCharCheckingWriter.cs
- ContainerActivationHelper.cs
- AttributeTableBuilder.cs
- BooleanConverter.cs
- WebEncodingValidatorAttribute.cs
- MD5CryptoServiceProvider.cs
- PathGeometry.cs
- GorillaCodec.cs
- ContentPlaceHolderDesigner.cs
- Accessible.cs
- ByeOperationCD1AsyncResult.cs
- InvalidFilterCriteriaException.cs
- SessionEndedEventArgs.cs
- TcpConnectionPoolSettings.cs
- TypeNameHelper.cs
- ConfigurationCollectionAttribute.cs
- Stroke.cs
- ComponentResourceKeyConverter.cs
- LicenseManager.cs
- TextWriterTraceListener.cs
- DefaultObjectMappingItemCollection.cs
- FacetDescriptionElement.cs
- ColorTranslator.cs
- SortableBindingList.cs
- FontDriver.cs
- PropertyGridEditorPart.cs
- TraceContextEventArgs.cs
- DisplayNameAttribute.cs
- CompModSwitches.cs
- LeaseManager.cs
- InvalidAsynchronousStateException.cs
- MessagePropertyVariants.cs
- QueryHandler.cs
- MatrixKeyFrameCollection.cs
- InvalidCardException.cs
- arabicshape.cs
- IntranetCredentialPolicy.cs
- shaperfactoryquerycachekey.cs
- DataGridViewRowCancelEventArgs.cs
- SHA1.cs
- Vector3DAnimation.cs
- XPathSelfQuery.cs
- ProtocolsConfigurationHandler.cs
- HtmlInputFile.cs
- NativeMethods.cs
- DateBoldEvent.cs
- XmlSchemaProviderAttribute.cs
- BooleanExpr.cs
- xdrvalidator.cs
- DefaultValueAttribute.cs
- Root.cs
- ChtmlTextWriter.cs
- MULTI_QI.cs
- MobileControlBuilder.cs
- PolyBezierSegmentFigureLogic.cs
- Root.cs
- AnnotationMap.cs
- SystemWebSectionGroup.cs
- EventArgs.cs