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
- RegexMatchCollection.cs
- MdiWindowListStrip.cs
- CacheDependency.cs
- ElementUtil.cs
- Trigger.cs
- ManipulationDeltaEventArgs.cs
- Panel.cs
- FrameworkTemplate.cs
- StyleBamlTreeBuilder.cs
- PrincipalPermission.cs
- DbParameterCollection.cs
- TraceLog.cs
- TextRangeSerialization.cs
- SurrogateSelector.cs
- ExtractorMetadata.cs
- SpellerHighlightLayer.cs
- XmlAnyAttributeAttribute.cs
- VirtualDirectoryMapping.cs
- PrivilegeNotHeldException.cs
- PreviewPageInfo.cs
- MimeFormReflector.cs
- BigInt.cs
- DataBoundControl.cs
- SerializationBinder.cs
- ItemsControlAutomationPeer.cs
- Sequence.cs
- AttributeProviderAttribute.cs
- BufferedGraphics.cs
- DelayLoadType.cs
- DataGridViewToolTip.cs
- BamlRecordWriter.cs
- TextRangeProviderWrapper.cs
- Thread.cs
- SimpleHandlerBuildProvider.cs
- MatrixTransform3D.cs
- Attachment.cs
- MemoryStream.cs
- FontFamilyConverter.cs
- LocalFileSettingsProvider.cs
- KeyboardDevice.cs
- WorkflowRuntimeElement.cs
- UriScheme.cs
- HiddenField.cs
- securitymgrsite.cs
- DetailsViewInsertedEventArgs.cs
- PeerDuplexChannel.cs
- Vector3D.cs
- _Connection.cs
- SqlTypeSystemProvider.cs
- GridViewRowEventArgs.cs
- DesignerVerbCollection.cs
- AgileSafeNativeMemoryHandle.cs
- AutoScrollHelper.cs
- Graph.cs
- CfgParser.cs
- WebPageTraceListener.cs
- PackagePart.cs
- ControlPropertyNameConverter.cs
- StylusPointPropertyId.cs
- InstanceData.cs
- Size.cs
- MetadataPropertyAttribute.cs
- PageSetupDialog.cs
- CombinedHttpChannel.cs
- CorrelationScope.cs
- ComponentResourceKey.cs
- IFlowDocumentViewer.cs
- Calendar.cs
- BaseCollection.cs
- SiteMapHierarchicalDataSourceView.cs
- EntityKey.cs
- SQLBinaryStorage.cs
- IssuedSecurityTokenProvider.cs
- WinEventHandler.cs
- HtmlContainerControl.cs
- HtmlFormWrapper.cs
- EdmFunctionAttribute.cs
- ServicePointManagerElement.cs
- SdlChannelSink.cs
- LinearKeyFrames.cs
- DateTimeUtil.cs
- ExpressionPrefixAttribute.cs
- ColumnReorderedEventArgs.cs
- WebPartConnectionsEventArgs.cs
- UnmanagedBitmapWrapper.cs
- ClientSettingsStore.cs
- ToolStripPanelRow.cs
- PublisherMembershipCondition.cs
- indexingfiltermarshaler.cs
- Point3DCollection.cs
- Operators.cs
- BitHelper.cs
- ProofTokenCryptoHandle.cs
- ValidatorCollection.cs
- CodeMemberEvent.cs
- XMLSyntaxException.cs
- LostFocusEventManager.cs
- RegularExpressionValidator.cs
- ObjectStateFormatter.cs
- ConfigurationSectionCollection.cs