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
- DrawingContext.cs
- SystemUnicastIPAddressInformation.cs
- XmlSchemaImport.cs
- PropertyGridDesigner.cs
- DataGridPreparingCellForEditEventArgs.cs
- MonitorWrapper.cs
- DownloadProgressEventArgs.cs
- StateValidator.cs
- SelectedDatesCollection.cs
- FramingChannels.cs
- KeyInfo.cs
- xamlnodes.cs
- TextSpanModifier.cs
- StylusEventArgs.cs
- SiteMapSection.cs
- TrackingProfile.cs
- SendSecurityHeader.cs
- InputGestureCollection.cs
- AuthenticationService.cs
- XmlBufferReader.cs
- PagerStyle.cs
- OptionalColumn.cs
- FieldValue.cs
- OleDbDataAdapter.cs
- ToolStripDropDownClosingEventArgs.cs
- _ConnectStream.cs
- GraphicsContext.cs
- TryCatchDesigner.xaml.cs
- EnumCodeDomSerializer.cs
- LocalizedNameDescriptionPair.cs
- UniqueIdentifierService.cs
- ContentFilePart.cs
- LogWriteRestartAreaState.cs
- SafeEventLogReadHandle.cs
- StandardTransformFactory.cs
- TextParagraphProperties.cs
- CodeMemberProperty.cs
- String.cs
- ByValueEqualityComparer.cs
- StrongNamePublicKeyBlob.cs
- LinkedList.cs
- UriTemplateDispatchFormatter.cs
- Util.cs
- SQLStringStorage.cs
- EditableRegion.cs
- Matrix3DStack.cs
- LingerOption.cs
- EventLevel.cs
- BrowserCapabilitiesCodeGenerator.cs
- base64Transforms.cs
- NativeMethods.cs
- Activator.cs
- InvokeHandlers.cs
- SignatureToken.cs
- ReliableChannelListener.cs
- CustomLineCap.cs
- UpdatableGenericsFeature.cs
- ListenerAdapterBase.cs
- WebConfigurationManager.cs
- ColorAnimation.cs
- ToolStripPanelDesigner.cs
- WebPartsPersonalizationAuthorization.cs
- Symbol.cs
- SamlAssertionDirectKeyIdentifierClause.cs
- SemanticKeyElement.cs
- Activity.cs
- TypedTableBaseExtensions.cs
- CatalogZoneDesigner.cs
- PrintPreviewDialog.cs
- SequentialOutput.cs
- DoubleSumAggregationOperator.cs
- _ConnectOverlappedAsyncResult.cs
- CustomAttribute.cs
- SessionState.cs
- Cell.cs
- StyleSheetComponentEditor.cs
- QuaternionConverter.cs
- RotationValidation.cs
- PresentationSource.cs
- ToolStripItemImageRenderEventArgs.cs
- NumericUpDownAccelerationCollection.cs
- HtmlForm.cs
- DuplicateWaitObjectException.cs
- Int16KeyFrameCollection.cs
- BindToObject.cs
- SectionUpdates.cs
- IgnoreFileBuildProvider.cs
- TextTrailingWordEllipsis.cs
- WindowsSpinner.cs
- BehaviorEditorPart.cs
- RootAction.cs
- ListMarkerSourceInfo.cs
- PointF.cs
- CheckBoxList.cs
- ProtocolsConfigurationEntry.cs
- SearchExpression.cs
- FlowDocumentFormatter.cs
- _SslSessionsCache.cs
- ExecutionTracker.cs
- ValidatingPropertiesEventArgs.cs