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
- TextElement.cs
- ToolstripProfessionalRenderer.cs
- ColorAnimation.cs
- ViewStateModeByIdAttribute.cs
- StructuredType.cs
- ClientData.cs
- IdentityReference.cs
- Vector3DAnimation.cs
- WhitespaceRuleLookup.cs
- AsnEncodedData.cs
- __TransparentProxy.cs
- COAUTHINFO.cs
- Mutex.cs
- TextServicesLoader.cs
- AdvancedBindingPropertyDescriptor.cs
- CustomAttribute.cs
- Root.cs
- RegexRunner.cs
- EndPoint.cs
- EnumBuilder.cs
- DefaultMemberAttribute.cs
- CodeRemoveEventStatement.cs
- PipelineModuleStepContainer.cs
- ParameterBuilder.cs
- SqlColumnizer.cs
- PolicyManager.cs
- SafeRightsManagementPubHandle.cs
- DocumentPageTextView.cs
- TypeSource.cs
- SafeArchiveContext.cs
- DrawListViewItemEventArgs.cs
- ClearTypeHintValidation.cs
- Mutex.cs
- ExpressionNormalizer.cs
- WebEncodingValidatorAttribute.cs
- TileBrush.cs
- ConfigsHelper.cs
- XhtmlBasicValidatorAdapter.cs
- Timer.cs
- HandleInitializationContext.cs
- TypeDependencyAttribute.cs
- FixedSchema.cs
- DecimalAnimationBase.cs
- EnumerationRangeValidationUtil.cs
- Config.cs
- AppDomainFactory.cs
- XmlDataSourceDesigner.cs
- KeysConverter.cs
- DoubleIndependentAnimationStorage.cs
- WizardPanel.cs
- CompilerScope.cs
- AdRotator.cs
- HttpListenerContext.cs
- DataKeyArray.cs
- ScriptingSectionGroup.cs
- ControlBindingsCollection.cs
- GeneralTransform2DTo3D.cs
- Deflater.cs
- RandomNumberGenerator.cs
- RecipientServiceModelSecurityTokenRequirement.cs
- MailMessageEventArgs.cs
- IdleTimeoutMonitor.cs
- BamlMapTable.cs
- SqlVersion.cs
- HyperLinkField.cs
- XmlParserContext.cs
- ObfuscateAssemblyAttribute.cs
- DataGridViewSelectedRowCollection.cs
- IODescriptionAttribute.cs
- CheckedListBox.cs
- BuilderInfo.cs
- KerberosSecurityTokenParameters.cs
- FactoryId.cs
- input.cs
- CodePageUtils.cs
- SecurityCookieModeValidator.cs
- DataSourceXmlSerializer.cs
- TreeViewAutomationPeer.cs
- ResourceType.cs
- ReceiveMessageAndVerifySecurityAsyncResultBase.cs
- CompressEmulationStream.cs
- PropertyBuilder.cs
- ProfileBuildProvider.cs
- MarkupCompilePass2.cs
- LingerOption.cs
- SchemaCollectionCompiler.cs
- DBBindings.cs
- XPathDocument.cs
- SqlBulkCopy.cs
- LogStream.cs
- CellConstantDomain.cs
- querybuilder.cs
- ClientScriptItem.cs
- CompilationLock.cs
- MonthChangedEventArgs.cs
- XmlILTrace.cs
- GridViewEditEventArgs.cs
- OracleException.cs
- TypeDescriptorFilterService.cs
- AttributeUsageAttribute.cs