Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / IdentityModel / System / IdentityModel / IdentityModelDictionary.cs / 1 / IdentityModelDictionary.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.IdentityModel { using System.Xml; using System.Collections.Generic; class IdentityModelDictionary : IXmlDictionary { static public readonly IdentityModelDictionary Version1 = new IdentityModelDictionary(new IdentityModelStringsVersion1()); IdentityModelStrings strings; int count; XmlDictionaryString[] dictionaryStrings; Dictionarydictionary; XmlDictionaryString[] versionedDictionaryStrings; public IdentityModelDictionary(IdentityModelStrings strings) { this.strings = strings; this.count = strings.Count; } static public IdentityModelDictionary CurrentVersion { get { return Version1; } } public XmlDictionaryString CreateString(string value, int key) { return new XmlDictionaryString(this, value, key); } public bool TryLookup(string key, out XmlDictionaryString value) { if (key == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("key")); if (this.dictionary == null) { Dictionary dictionary = new Dictionary (count); for (int i = 0; i < count; i++) dictionary.Add(strings[i], i); this.dictionary = dictionary; } int id; if (this.dictionary.TryGetValue(key, out id)) return TryLookup(id, out value); value = null; return false; } public bool TryLookup(int key, out XmlDictionaryString value) { if (key < 0 || key >= count) { value = null; return false; } if (dictionaryStrings == null) dictionaryStrings = new XmlDictionaryString[count]; XmlDictionaryString s = dictionaryStrings[key]; if (s == null) { s = CreateString(strings[key], key); dictionaryStrings[key]= s; } value = s; return true; } public bool TryLookup(XmlDictionaryString key, out XmlDictionaryString value) { if (key == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("key")); if (key.Dictionary == this) { value = key; return true; } if (key.Dictionary == CurrentVersion) { if (versionedDictionaryStrings == null) versionedDictionaryStrings = new XmlDictionaryString[CurrentVersion.count]; XmlDictionaryString s = versionedDictionaryStrings[key.Key]; if (s == null) { if (!TryLookup(key.Value, out s)) { value = null; return false; } versionedDictionaryStrings[key.Key] = s; } value = s; return true; } value = null; return false; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- EmptyReadOnlyDictionaryInternal.cs
- CompiledQueryCacheKey.cs
- DbgCompiler.cs
- SchemaElementDecl.cs
- ConfigurationManagerHelper.cs
- EnterpriseServicesHelper.cs
- WebSysDescriptionAttribute.cs
- XmlDataSourceNodeDescriptor.cs
- SelectedCellsChangedEventArgs.cs
- PaintValueEventArgs.cs
- SafeRightsManagementHandle.cs
- AudioException.cs
- DataIdProcessor.cs
- XamlSerializationHelper.cs
- EntitySet.cs
- XPathAncestorIterator.cs
- shaperfactoryquerycacheentry.cs
- sqlinternaltransaction.cs
- AsyncPostBackErrorEventArgs.cs
- SafeMILHandle.cs
- WebControlsSection.cs
- ListViewItemEventArgs.cs
- ArrayListCollectionBase.cs
- EventTrigger.cs
- SiteMapDataSource.cs
- SignatureHelper.cs
- ResetableIterator.cs
- WhitespaceRule.cs
- ControlType.cs
- FileNotFoundException.cs
- TimeEnumHelper.cs
- XmlKeywords.cs
- _TimerThread.cs
- DataControlFieldCell.cs
- CalendarDay.cs
- MaxMessageSizeStream.cs
- UserControlParser.cs
- BitmapFrame.cs
- BitStack.cs
- SettingsAttributes.cs
- EventLogConfiguration.cs
- Visitor.cs
- DPTypeDescriptorContext.cs
- XmlNavigatorFilter.cs
- CompleteWizardStep.cs
- SelectManyQueryOperator.cs
- _ListenerResponseStream.cs
- ConfigXmlElement.cs
- RangeBaseAutomationPeer.cs
- SchemaObjectWriter.cs
- SequentialOutput.cs
- StatusCommandUI.cs
- CodeAttributeArgument.cs
- WindowsToolbarAsMenu.cs
- ThreadInterruptedException.cs
- ElementsClipboardData.cs
- AttributeSetAction.cs
- FeatureSupport.cs
- UserControl.cs
- AdapterUtil.cs
- SecurityProtocolFactory.cs
- PreviousTrackingServiceAttribute.cs
- DataTableNameHandler.cs
- DispatcherObject.cs
- ExtensionWindowResizeGrip.cs
- PropertyNames.cs
- Update.cs
- ReferenceList.cs
- PhysicalFontFamily.cs
- PropertyEntry.cs
- RootProfilePropertySettingsCollection.cs
- BuildProvider.cs
- TypeProvider.cs
- OleDbConnection.cs
- ResourcePool.cs
- LicenseManager.cs
- LinkButton.cs
- NavigationProgressEventArgs.cs
- IntegrationExceptionEventArgs.cs
- ResourcePermissionBase.cs
- ObjectItemLoadingSessionData.cs
- MsmqQueue.cs
- InvalidFilterCriteriaException.cs
- BlobPersonalizationState.cs
- Array.cs
- CrossContextChannel.cs
- NumberFormatInfo.cs
- XmlDataImplementation.cs
- DateTimeParse.cs
- IndependentlyAnimatedPropertyMetadata.cs
- SynchronizedCollection.cs
- ToolStripItem.cs
- ActivationArguments.cs
- RoleServiceManager.cs
- CodeChecksumPragma.cs
- CustomAttributeBuilder.cs
- ToolStripContainer.cs
- ParameterModifier.cs
- EnumBuilder.cs
- ItemsControlAutomationPeer.cs