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
- CommandField.cs
- XsltFunctions.cs
- CurrencyWrapper.cs
- MessageEncoderFactory.cs
- WebPartCatalogCloseVerb.cs
- ObjectParameterCollection.cs
- EventArgs.cs
- Exceptions.cs
- BufferedGraphicsContext.cs
- BooleanSwitch.cs
- TypeElementCollection.cs
- CustomValidator.cs
- TextTreeExtractElementUndoUnit.cs
- InfoCardSymmetricCrypto.cs
- MultipleViewProviderWrapper.cs
- ErrorRuntimeConfig.cs
- InheritanceAttribute.cs
- COM2EnumConverter.cs
- DataRow.cs
- ServiceHost.cs
- GradientStopCollection.cs
- ExpressionContext.cs
- ResponseStream.cs
- BufferedResponseStream.cs
- HttpCacheVary.cs
- GlobalizationAssembly.cs
- MemoryMappedFileSecurity.cs
- ProviderConnectionPoint.cs
- RulePatternOps.cs
- ManagementScope.cs
- ColorTransform.cs
- FullTextBreakpoint.cs
- EntityParameterCollection.cs
- WsdlImporterElement.cs
- WebServiceFault.cs
- PeerInputChannelListener.cs
- AuthenticationManager.cs
- COM2IDispatchConverter.cs
- DataObjectCopyingEventArgs.cs
- UpdatePanelTriggerCollection.cs
- TrustSection.cs
- SortQuery.cs
- ListViewItemEventArgs.cs
- DesignerView.cs
- ReadOnlyHierarchicalDataSource.cs
- EntityDesignerUtils.cs
- ObjectListGeneralPage.cs
- lengthconverter.cs
- AnonymousIdentificationModule.cs
- ChangeDirector.cs
- FixedPageProcessor.cs
- DateTime.cs
- securitycriticaldataClass.cs
- ElementAction.cs
- MonthChangedEventArgs.cs
- TraceContextRecord.cs
- BindingCollection.cs
- ContainerControl.cs
- FormsAuthenticationModule.cs
- DataBoundControlHelper.cs
- DataControlFieldCell.cs
- ColumnResult.cs
- XmlDataSourceDesigner.cs
- MetadataPropertyvalue.cs
- CorrelationManager.cs
- EncoderParameter.cs
- Stack.cs
- DrawingDrawingContext.cs
- AuthorizationRuleCollection.cs
- BaseTemplateParser.cs
- TextParagraphView.cs
- DependencyPropertyAttribute.cs
- ContextQuery.cs
- ResourceIDHelper.cs
- HyperLinkDesigner.cs
- GridProviderWrapper.cs
- MustUnderstandSoapException.cs
- SaveFileDialogDesigner.cs
- HttpStreams.cs
- SecurityDocument.cs
- LineServicesCallbacks.cs
- FormViewDeletedEventArgs.cs
- Qualifier.cs
- DateTimeUtil.cs
- ManagementScope.cs
- BorderGapMaskConverter.cs
- DataGridViewTopRowAccessibleObject.cs
- InternalRelationshipCollection.cs
- FormsAuthenticationModule.cs
- MSG.cs
- InkSerializer.cs
- SubMenuStyle.cs
- TypeInfo.cs
- FamilyMap.cs
- Menu.cs
- Encoder.cs
- XPathLexer.cs
- VirtualPath.cs
- CodeDirectoryCompiler.cs
- ContractSearchPattern.cs