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
- BaseTemplateCodeDomTreeGenerator.cs
- WindowsClientElement.cs
- TextMarkerSource.cs
- SoapCodeExporter.cs
- SQLInt16Storage.cs
- autovalidator.cs
- ComponentSerializationService.cs
- XPathNodeIterator.cs
- BitmapPalette.cs
- MouseActionConverter.cs
- BuildProvider.cs
- DataGridViewCellParsingEventArgs.cs
- AssemblyName.cs
- Compiler.cs
- MessageSmuggler.cs
- AssertUtility.cs
- PenLineJoinValidation.cs
- SevenBitStream.cs
- Window.cs
- NameService.cs
- ApplicationCommands.cs
- PolicyLevel.cs
- AnimatedTypeHelpers.cs
- EventInfo.cs
- CorrelationKey.cs
- ThicknessConverter.cs
- Nullable.cs
- CollectionViewSource.cs
- WorkflowNamespace.cs
- CopyOfAction.cs
- XmlNodeComparer.cs
- ScriptManagerProxy.cs
- Accessible.cs
- DataControlExtensions.cs
- PointCollectionConverter.cs
- RadioButton.cs
- TreeViewBindingsEditorForm.cs
- EnumerableCollectionView.cs
- StringComparer.cs
- ScriptBehaviorDescriptor.cs
- WebPartCollection.cs
- RelationshipDetailsCollection.cs
- ArrayConverter.cs
- ParserOptions.cs
- Events.cs
- SessionPageStateSection.cs
- MultiAsyncResult.cs
- ProgressPage.cs
- ExcludeFromCodeCoverageAttribute.cs
- TableLayoutPanelCodeDomSerializer.cs
- EdmComplexPropertyAttribute.cs
- SizeValueSerializer.cs
- DataGridPageChangedEventArgs.cs
- ComponentCodeDomSerializer.cs
- MetadataCollection.cs
- ColumnPropertiesGroup.cs
- KeyTimeConverter.cs
- HttpClientProtocol.cs
- CodeMethodInvokeExpression.cs
- GridErrorDlg.cs
- FixedDocumentPaginator.cs
- PublisherMembershipCondition.cs
- ObjectSpanRewriter.cs
- FontSizeConverter.cs
- StyleHelper.cs
- CachingHintValidation.cs
- SqlServer2KCompatibilityCheck.cs
- FixedDSBuilder.cs
- TypedElement.cs
- mil_commands.cs
- Parser.cs
- XmlDownloadManager.cs
- RawStylusInputCustomDataList.cs
- MatrixTransform3D.cs
- LogicalExpr.cs
- Renderer.cs
- ConfigXmlComment.cs
- DefaultProxySection.cs
- ExpressionPrefixAttribute.cs
- EncoderBestFitFallback.cs
- ConnectionStringSettingsCollection.cs
- AppDomainProtocolHandler.cs
- CompilerResults.cs
- PathGradientBrush.cs
- Fonts.cs
- ResourcesChangeInfo.cs
- StrokeRenderer.cs
- Documentation.cs
- ServiceHttpHandlerFactory.cs
- LOSFormatter.cs
- StackOverflowException.cs
- XmlNodeComparer.cs
- COM2ColorConverter.cs
- HexParser.cs
- SecureStringHasher.cs
- MetadataArtifactLoaderCompositeFile.cs
- DragAssistanceManager.cs
- SerializationHelper.cs
- CodeDomConfigurationHandler.cs
- BufferModeSettings.cs