Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / IdentityModel / System / IdentityModel / IdentityModelDictionary.cs / 1305376 / 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. //----------------------------------------------------------- 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; Dictionary dictionary; 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- AsyncStreamReader.cs
- VirtualDirectoryMappingCollection.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- XmlSchemaAnyAttribute.cs
- SynchronizationContext.cs
- DependencyPropertyKind.cs
- WindowsUpDown.cs
- ChannelPoolSettingsElement.cs
- DependencyPropertyKey.cs
- ImageCodecInfo.cs
- MemberHolder.cs
- ServiceOperationListItemList.cs
- XmlWriterDelegator.cs
- PropertyGridEditorPart.cs
- AppDomainProtocolHandler.cs
- ControlEvent.cs
- UpdatePanelControlTrigger.cs
- QuadraticBezierSegment.cs
- UIElement3D.cs
- ArrayList.cs
- BitmapEffectInput.cs
- RunClient.cs
- DbParameterHelper.cs
- NegotiationTokenAuthenticator.cs
- StatusStrip.cs
- TextEditorThreadLocalStore.cs
- DocumentViewer.cs
- NameObjectCollectionBase.cs
- SpeechSynthesizer.cs
- XmlAutoDetectWriter.cs
- DataGridViewCellValueEventArgs.cs
- CrossContextChannel.cs
- WindowsPrincipal.cs
- TextOptionsInternal.cs
- GridLengthConverter.cs
- SharedStatics.cs
- PerformanceCountersElement.cs
- Serializer.cs
- EmissiveMaterial.cs
- _DigestClient.cs
- BuilderInfo.cs
- MembershipValidatePasswordEventArgs.cs
- Evidence.cs
- CollectionType.cs
- ExecutionScope.cs
- WsatAdminException.cs
- BasicCellRelation.cs
- RemoteWebConfigurationHostStream.cs
- DataExpression.cs
- RelationshipManager.cs
- DispatcherHookEventArgs.cs
- XmlObjectSerializerContext.cs
- OutputCacheProfileCollection.cs
- Viewport2DVisual3D.cs
- _TransmitFileOverlappedAsyncResult.cs
- WindowsImpersonationContext.cs
- DocumentGridContextMenu.cs
- altserialization.cs
- KeyEvent.cs
- ZipIOFileItemStream.cs
- RectValueSerializer.cs
- EntityTypeEmitter.cs
- FileSystemInfo.cs
- ReferencedCollectionType.cs
- DummyDataSource.cs
- ScalarConstant.cs
- MatrixKeyFrameCollection.cs
- MediaPlayer.cs
- PageThemeCodeDomTreeGenerator.cs
- TextEditor.cs
- StreamAsIStream.cs
- ZoomComboBox.cs
- DrawingGroupDrawingContext.cs
- Propagator.ExtentPlaceholderCreator.cs
- TypeValidationEventArgs.cs
- BindUriHelper.cs
- CacheVirtualItemsEvent.cs
- RadialGradientBrush.cs
- GPRECT.cs
- DesignerSerializerAttribute.cs
- RegexTypeEditor.cs
- FrameworkReadOnlyPropertyMetadata.cs
- MinimizableAttributeTypeConverter.cs
- ValueCollectionParameterReader.cs
- SqlDataSourceTableQuery.cs
- ActivityUtilities.cs
- clipboard.cs
- ObjectDataProvider.cs
- StyleHelper.cs
- CompilerError.cs
- UnsignedPublishLicense.cs
- ObjectStateFormatter.cs
- Wizard.cs
- _RequestCacheProtocol.cs
- StringFormat.cs
- PropertyGridCommands.cs
- ComAdminWrapper.cs
- TaskCanceledException.cs
- AssemblyAttributes.cs
- HTMLTagNameToTypeMapper.cs