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

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- AvTraceFormat.cs
- DbParameterHelper.cs
- IteratorFilter.cs
- GuidelineCollection.cs
- Decorator.cs
- SystemColors.cs
- ComponentResourceManager.cs
- ButtonBaseAdapter.cs
- Parsers.cs
- TimeIntervalCollection.cs
- FormViewInsertEventArgs.cs
- AppDomain.cs
- TypeUtil.cs
- ListViewDeletedEventArgs.cs
- ApplicationManager.cs
- WindowsListViewSubItem.cs
- SqlTypeConverter.cs
- RequestQueue.cs
- SelectionChangedEventArgs.cs
- RoleManagerSection.cs
- FillRuleValidation.cs
- FileChangesMonitor.cs
- SiteMapSection.cs
- CqlErrorHelper.cs
- ScriptingRoleServiceSection.cs
- DatePickerDateValidationErrorEventArgs.cs
- ClientTarget.cs
- FontClient.cs
- ProjectionPath.cs
- CounterCreationData.cs
- ClientApiGenerator.cs
- PathFigure.cs
- OdbcHandle.cs
- ButtonChrome.cs
- InternalConfigRoot.cs
- OleAutBinder.cs
- OpenTypeLayout.cs
- HighlightVisual.cs
- ApplicationDirectory.cs
- OneOf.cs
- XmlConvert.cs
- DataSourceGroupCollection.cs
- XmlFormatExtensionPrefixAttribute.cs
- WorkItem.cs
- Encoding.cs
- ImageCodecInfoPrivate.cs
- MatrixAnimationBase.cs
- DataGridColumnFloatingHeader.cs
- SHA1Managed.cs
- ClipboardData.cs
- Attributes.cs
- FixedSOMTableCell.cs
- XmlSchemaDocumentation.cs
- PipeSecurity.cs
- HtmlString.cs
- SizeIndependentAnimationStorage.cs
- LazyTextWriterCreator.cs
- XslException.cs
- SQLInt32.cs
- SoapFormatExtensions.cs
- UnsafeNativeMethods.cs
- TextServicesPropertyRanges.cs
- XmlCDATASection.cs
- COAUTHINFO.cs
- ResXBuildProvider.cs
- SHA512.cs
- TransformDescriptor.cs
- DesignerVerb.cs
- NativeObjectSecurity.cs
- CodeDirectoryCompiler.cs
- DesignerMetadata.cs
- ViewGenerator.cs
- ToolStripItemGlyph.cs
- ViewBase.cs
- AutomationPropertyInfo.cs
- DataGridCell.cs
- ButtonField.cs
- NativeCompoundFileAPIs.cs
- ConfigurationStrings.cs
- GPPOINTF.cs
- DeobfuscatingStream.cs
- BuildProvidersCompiler.cs
- SqlBulkCopyColumnMappingCollection.cs
- TraceHwndHost.cs
- VirtualDirectoryMappingCollection.cs
- DLinqColumnProvider.cs
- PassportAuthentication.cs
- CqlParserHelpers.cs
- BooleanKeyFrameCollection.cs
- FixedSOMSemanticBox.cs
- DataBoundControl.cs
- InkCanvasSelection.cs
- Function.cs
- AutoGeneratedFieldProperties.cs
- WindowsClaimSet.cs
- TokenizerHelper.cs
- Sql8ExpressionRewriter.cs
- ItemType.cs
- RemoveStoryboard.cs
- CodeTypeReferenceCollection.cs