Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------------------------ // 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
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Odbc32.cs
- DataObjectAttribute.cs
- StructuralObject.cs
- Endpoint.cs
- SettingsAttributes.cs
- DashStyles.cs
- _NetRes.cs
- ApplicationId.cs
- sortedlist.cs
- FixedBufferAttribute.cs
- GridItemProviderWrapper.cs
- FormsAuthentication.cs
- EventLogPermissionEntryCollection.cs
- XmlStreamNodeWriter.cs
- SchemaImporter.cs
- Cursor.cs
- NativeMethods.cs
- ArrayMergeHelper.cs
- WindowsSecurityTokenAuthenticator.cs
- WebPartRestoreVerb.cs
- DbModificationCommandTree.cs
- PenLineJoinValidation.cs
- ViewCellRelation.cs
- DataGridViewSortCompareEventArgs.cs
- AccessorTable.cs
- MenuItemCollection.cs
- SchemaImporter.cs
- TextParaClient.cs
- Operators.cs
- RoleService.cs
- ContextProperty.cs
- storepermissionattribute.cs
- DragDeltaEventArgs.cs
- HttpServerUtilityBase.cs
- CopyOfAction.cs
- SR.cs
- VerticalAlignConverter.cs
- VisualBrush.cs
- JavaScriptSerializer.cs
- LocatorPartList.cs
- DragSelectionMessageFilter.cs
- SimpleType.cs
- BulletChrome.cs
- XmlSortKeyAccumulator.cs
- Span.cs
- TextPointer.cs
- ResourcePool.cs
- SqlClientWrapperSmiStreamChars.cs
- Fonts.cs
- UICuesEvent.cs
- FontWeight.cs
- Vector3D.cs
- SessionPageStatePersister.cs
- HttpContextServiceHost.cs
- IdentityNotMappedException.cs
- DataSourceXmlElementAttribute.cs
- KeyValueSerializer.cs
- BehaviorService.cs
- GroupItemAutomationPeer.cs
- HtmlElementCollection.cs
- ConstrainedDataObject.cs
- ShortcutKeysEditor.cs
- SafePointer.cs
- ProfessionalColorTable.cs
- ImageField.cs
- XmlNamedNodeMap.cs
- AccessDataSourceView.cs
- CryptoStream.cs
- SqlDataReader.cs
- PersonalizationStateInfo.cs
- Odbc32.cs
- basevalidator.cs
- StructuredType.cs
- TextEditorDragDrop.cs
- DataError.cs
- UriTemplateLiteralQueryValue.cs
- Base64Decoder.cs
- Frame.cs
- StateDesignerConnector.cs
- XomlCompiler.cs
- InputEventArgs.cs
- ExponentialEase.cs
- PrintingPermission.cs
- ManagedFilter.cs
- GatewayIPAddressInformationCollection.cs
- EtwTrackingBehavior.cs
- BitmapEncoder.cs
- XmlDownloadManager.cs
- Trace.cs
- TextEffectCollection.cs
- PlaceHolder.cs
- StylusEditingBehavior.cs
- ReadOnlyCollectionBase.cs
- ConfigurationValue.cs
- ServiceOperationInfoTypeConverter.cs
- recordstatescratchpad.cs
- TabControlDesigner.cs
- BitmapData.cs
- mediapermission.cs
- CodeAttributeArgumentCollection.cs