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
- RolePrincipal.cs
- DeclarationUpdate.cs
- HostedImpersonationContext.cs
- CopyNodeSetAction.cs
- ObjectReaderCompiler.cs
- cache.cs
- UserControlDocumentDesigner.cs
- PersonalizationAdministration.cs
- PagesChangedEventArgs.cs
- ToolStripArrowRenderEventArgs.cs
- HtmlWindow.cs
- RegularExpressionValidator.cs
- RequestCacheValidator.cs
- ColorConvertedBitmap.cs
- ProxyElement.cs
- Trace.cs
- ServiceReference.cs
- ColumnWidthChangedEvent.cs
- ListViewDeletedEventArgs.cs
- TreeNodeSelectionProcessor.cs
- MediaPlayerState.cs
- BamlRecordHelper.cs
- DocumentCollection.cs
- Bits.cs
- DataSetViewSchema.cs
- ProcessProtocolHandler.cs
- WebControlsSection.cs
- WebPartConnectionsConfigureVerb.cs
- input.cs
- TextSchema.cs
- cookiecontainer.cs
- basemetadatamappingvisitor.cs
- DetailsView.cs
- GraphicsPath.cs
- RowUpdatingEventArgs.cs
- EntitySqlQueryCacheEntry.cs
- BoundColumn.cs
- IssuanceTokenProviderBase.cs
- StatusBar.cs
- ContractUtils.cs
- LogFlushAsyncResult.cs
- CheckBoxPopupAdapter.cs
- ServerValidateEventArgs.cs
- SEHException.cs
- FixedFindEngine.cs
- ElapsedEventArgs.cs
- NumericUpDownAccelerationCollection.cs
- EnvelopedPkcs7.cs
- ReaderContextStackData.cs
- RestClientProxyHandler.cs
- CompressStream.cs
- SqlDataSourceConfigureFilterForm.cs
- TranslateTransform3D.cs
- ColorIndependentAnimationStorage.cs
- WorkflowInstance.cs
- RootProfilePropertySettingsCollection.cs
- wgx_exports.cs
- RectangleF.cs
- WpfXamlType.cs
- NamedPipeTransportSecurity.cs
- UIPermission.cs
- HtmlTableRow.cs
- SoapSchemaImporter.cs
- ScrollProperties.cs
- SynchronizingStream.cs
- Documentation.cs
- FlowDocumentReaderAutomationPeer.cs
- SqlException.cs
- VScrollProperties.cs
- TextBox.cs
- StreamUpdate.cs
- TextSchema.cs
- ThreadSafeList.cs
- XmlMemberMapping.cs
- SplineQuaternionKeyFrame.cs
- HijriCalendar.cs
- Rotation3D.cs
- ListBase.cs
- FrameAutomationPeer.cs
- EventLogPermissionEntryCollection.cs
- ProxyGenerator.cs
- FastEncoder.cs
- MailFileEditor.cs
- ValueTable.cs
- TransactionsSectionGroup.cs
- BuildResult.cs
- Util.cs
- HttpFileCollection.cs
- Storyboard.cs
- LingerOption.cs
- TCPListener.cs
- SharedStatics.cs
- ProcessInfo.cs
- Exceptions.cs
- HierarchicalDataBoundControlAdapter.cs
- WindowsListViewGroup.cs
- Parser.cs
- PassportAuthenticationModule.cs
- ContentPropertyAttribute.cs
- ImageInfo.cs