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
- SQLByte.cs
- ScrollableControl.cs
- EntityContainerRelationshipSet.cs
- SqlBuilder.cs
- XhtmlBasicTextViewAdapter.cs
- DataServiceRequestException.cs
- ToolboxBitmapAttribute.cs
- ByteAnimationUsingKeyFrames.cs
- AnnotationDocumentPaginator.cs
- PresentationAppDomainManager.cs
- CompareValidator.cs
- SecurityUtils.cs
- RoleGroup.cs
- PeerPresenceInfo.cs
- WinInetCache.cs
- Quad.cs
- infer.cs
- UmAlQuraCalendar.cs
- SimpleBitVector32.cs
- DocumentPageView.cs
- DbMetaDataCollectionNames.cs
- XmlEntity.cs
- GridViewRow.cs
- DataTemplateKey.cs
- Error.cs
- ProcessModule.cs
- TypeDescriptionProvider.cs
- StaticFileHandler.cs
- WebServiceTypeData.cs
- ThemeDictionaryExtension.cs
- SqlMetaData.cs
- ResolvePPIDRequest.cs
- EventLogTraceListener.cs
- PrintDialogDesigner.cs
- FileNotFoundException.cs
- MultiTouchSystemGestureLogic.cs
- DataListItem.cs
- PartialToken.cs
- IsolatedStorageFileStream.cs
- Matrix3D.cs
- ProtocolsConfigurationHandler.cs
- WmlValidatorAdapter.cs
- DocumentStatusResources.cs
- DbConnectionClosed.cs
- WindowsFormsSynchronizationContext.cs
- SchemaImporterExtensionsSection.cs
- InvalidCastException.cs
- HtmlShim.cs
- XsltContext.cs
- ToolStripSeparatorRenderEventArgs.cs
- ErrorRuntimeConfig.cs
- ColorBlend.cs
- DataObject.cs
- WrapperSecurityCommunicationObject.cs
- HashSet.cs
- MediaSystem.cs
- XmlILStorageConverter.cs
- PartitionerQueryOperator.cs
- PersonalizationProvider.cs
- SID.cs
- HtmlHead.cs
- HierarchicalDataSourceControl.cs
- FontStretchConverter.cs
- FamilyMap.cs
- AssemblyBuilder.cs
- DataServiceCollectionOfT.cs
- ValidationRule.cs
- WindowsNonControl.cs
- SqlRecordBuffer.cs
- MethodBuilderInstantiation.cs
- BindingParameterCollection.cs
- BooleanExpr.cs
- counter.cs
- HtmlValidationSummaryAdapter.cs
- RectangleHotSpot.cs
- QueuePathEditor.cs
- SafeLocalAllocation.cs
- ProviderConnectionPoint.cs
- HMACSHA256.cs
- DataGridAutoGeneratingColumnEventArgs.cs
- ListenerSingletonConnectionReader.cs
- ItemDragEvent.cs
- ProjectionPruner.cs
- ExecutionScope.cs
- InitializerFacet.cs
- DefaultMemberAttribute.cs
- ToolStripRenderEventArgs.cs
- SqlNotificationRequest.cs
- hresults.cs
- WorkflowClientDeliverMessageWrapper.cs
- ResolveMatchesApril2005.cs
- MemberRelationshipService.cs
- SizeConverter.cs
- SettingsAttributes.cs
- InkCanvas.cs
- _RequestCacheProtocol.cs
- TargetPerspective.cs
- MULTI_QI.cs
- StackSpiller.Bindings.cs
- ServiceChannelManager.cs