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
- EpmSyndicationContentDeSerializer.cs
- SqlAliaser.cs
- DispatcherExceptionFilterEventArgs.cs
- QueryOperationResponseOfT.cs
- WebServiceHost.cs
- ManifestBasedResourceGroveler.cs
- TableFieldsEditor.cs
- SafeReadContext.cs
- WebControl.cs
- ObjectViewQueryResultData.cs
- __ConsoleStream.cs
- ReadOnlyCollection.cs
- PrimitiveType.cs
- BaseResourcesBuildProvider.cs
- BufferedStream.cs
- GenericIdentity.cs
- CTreeGenerator.cs
- ByteStreamGeometryContext.cs
- OptionalMessageQuery.cs
- QueryStringParameter.cs
- ComplexType.cs
- RegisteredHiddenField.cs
- CalendarButton.cs
- ObjectListShowCommandsEventArgs.cs
- BinHexDecoder.cs
- ADConnectionHelper.cs
- ReadOnlyHierarchicalDataSource.cs
- DataRow.cs
- ThicknessAnimationUsingKeyFrames.cs
- WebPart.cs
- EditModeSwitchButton.cs
- COM2ComponentEditor.cs
- ArraySubsetEnumerator.cs
- X509RecipientCertificateServiceElement.cs
- AdornedElementPlaceholder.cs
- ExpiredSecurityTokenException.cs
- EncoderParameter.cs
- PeerNeighborManager.cs
- AutomationElement.cs
- EndpointDiscoveryMetadata.cs
- Pair.cs
- BaseDataBoundControl.cs
- GlyphRun.cs
- WinEventWrap.cs
- XmlMembersMapping.cs
- XmlAnyAttributeAttribute.cs
- BufferAllocator.cs
- ScalarType.cs
- SqlDependencyListener.cs
- SlipBehavior.cs
- Variable.cs
- XmlIlGenerator.cs
- MaterialGroup.cs
- ProfileServiceManager.cs
- ArrayEditor.cs
- WebServiceTypeData.cs
- ResourceExpressionBuilder.cs
- mediaclock.cs
- GeneralTransformGroup.cs
- XmlWellformedWriter.cs
- StylusPoint.cs
- EntityDataSourceValidationException.cs
- KeyNameIdentifierClause.cs
- Matrix3D.cs
- keycontainerpermission.cs
- ToolStripTemplateNode.cs
- LineGeometry.cs
- PasswordBox.cs
- CustomCredentialPolicy.cs
- FixedPageProcessor.cs
- ProxyWebPart.cs
- XpsException.cs
- TraceListeners.cs
- ProviderConnectionPoint.cs
- ManipulationDeltaEventArgs.cs
- PeerToPeerException.cs
- ErrorEventArgs.cs
- BaseUriHelper.cs
- TreeNode.cs
- ConfigXmlElement.cs
- DesignerActionUIStateChangeEventArgs.cs
- StrokeNodeEnumerator.cs
- OutKeywords.cs
- GeometryModel3D.cs
- _FtpControlStream.cs
- TypefaceCollection.cs
- DataGridView.cs
- ForwardPositionQuery.cs
- newinstructionaction.cs
- TraceEventCache.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- IdentityModelDictionary.cs
- Color.cs
- DWriteFactory.cs
- ManagementPath.cs
- PartitionerStatic.cs
- X500Name.cs
- PopOutPanel.cs
- StrictAndMessageFilter.cs
- FormatVersion.cs