Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / ServiceModelDictionary.cs / 1 / ServiceModelDictionary.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel { using System.Xml; using System.Collections.Generic; class ServiceModelDictionary : IXmlDictionary { static public readonly ServiceModelDictionary Version1 = new ServiceModelDictionary(new ServiceModelStringsVersion1()); ServiceModelStrings strings; int count; XmlDictionaryString[] dictionaryStrings1; XmlDictionaryString[] dictionaryStrings2; Dictionarydictionary; XmlDictionaryString[] versionedDictionaryStrings; public ServiceModelDictionary(ServiceModelStrings strings) { this.strings = strings; this.count = strings.Count; } static public ServiceModelDictionary 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) { const int keyThreshold = 32; if (key < 0 || key >= count) { value = null; return false; } XmlDictionaryString s; if (key < keyThreshold) { if (dictionaryStrings1 == null) dictionaryStrings1 = new XmlDictionaryString[keyThreshold]; s = dictionaryStrings1[key]; if (s == null) { s = CreateString(strings[key], key); dictionaryStrings1[key] = s; } } else { if (dictionaryStrings2 == null) dictionaryStrings2 = new XmlDictionaryString[count - keyThreshold]; s = dictionaryStrings2[key - keyThreshold]; if (s == null) { s = CreateString(strings[key], key); dictionaryStrings2[key - keyThreshold] = 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
- Command.cs
- XmlTextReaderImplHelpers.cs
- ButtonBase.cs
- RepeatButton.cs
- EventDescriptorCollection.cs
- DateTimeConverter.cs
- DataGridViewColumnHeaderCell.cs
- EdmEntityTypeAttribute.cs
- EmptyTextWriter.cs
- DbXmlEnabledProviderManifest.cs
- InvalidTimeZoneException.cs
- PropertyBuilder.cs
- SessionPageStatePersister.cs
- DesignerSerializationManager.cs
- RedirectionProxy.cs
- MemoryStream.cs
- SettingsPropertyValue.cs
- ImageDrawing.cs
- FunctionMappingTranslator.cs
- RMEnrollmentPage2.cs
- LogReservationCollection.cs
- EventItfInfo.cs
- ExtentJoinTreeNode.cs
- EntityClientCacheKey.cs
- CodeMemberMethod.cs
- EllipseGeometry.cs
- Column.cs
- CodeMemberField.cs
- WebConfigManager.cs
- CacheOutputQuery.cs
- Vars.cs
- RelationshipNavigation.cs
- _CookieModule.cs
- RSAOAEPKeyExchangeDeformatter.cs
- MessageTransmitTraceRecord.cs
- AmbientLight.cs
- ServiceObjectContainer.cs
- DbConnectionPoolIdentity.cs
- ControlBuilderAttribute.cs
- DropShadowBitmapEffect.cs
- PathSegment.cs
- SymDocumentType.cs
- BitmapInitialize.cs
- PointF.cs
- ProjectedSlot.cs
- CodeRemoveEventStatement.cs
- PageSetupDialog.cs
- ProfileSection.cs
- EmptyStringExpandableObjectConverter.cs
- OleCmdHelper.cs
- CompilationRelaxations.cs
- BufferedGraphics.cs
- HyperLinkField.cs
- XmlAttributeCollection.cs
- SqlStatistics.cs
- Knowncolors.cs
- CardSpaceException.cs
- EntityTypeEmitter.cs
- Timer.cs
- SoundPlayer.cs
- DirectoryNotFoundException.cs
- WsatExtendedInformation.cs
- GlyphingCache.cs
- PageTheme.cs
- QuaternionAnimation.cs
- ToolStripItemDesigner.cs
- FontStyles.cs
- InputElement.cs
- OperatingSystem.cs
- DataGridLength.cs
- AnnotationAuthorChangedEventArgs.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- ObjectStateManager.cs
- GenericAuthenticationEventArgs.cs
- CfgParser.cs
- ProcessModelSection.cs
- OdbcConnectionHandle.cs
- ObjectListGeneralPage.cs
- ValidatedControlConverter.cs
- ImageCodecInfo.cs
- DesignerActionHeaderItem.cs
- ViewKeyConstraint.cs
- Pen.cs
- HostProtectionException.cs
- ThreadStartException.cs
- PrintPageEvent.cs
- NamedPipeTransportManager.cs
- SqlDataSourceConfigureFilterForm.cs
- HtmlWindowCollection.cs
- _BufferOffsetSize.cs
- TraceListener.cs
- DocumentViewer.cs
- Nullable.cs
- RepeatBehavior.cs
- MethodBuilder.cs
- Pair.cs
- PropertyIDSet.cs
- ExpressionHelper.cs
- XmlBufferReader.cs
- XPathDocumentNavigator.cs