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
- SoapMessage.cs
- OutOfProcStateClientManager.cs
- TextParentUndoUnit.cs
- X509Certificate2.cs
- Margins.cs
- FileIOPermission.cs
- BaseDataBoundControl.cs
- XMLSyntaxException.cs
- XamlFigureLengthSerializer.cs
- SimpleRecyclingCache.cs
- Int32KeyFrameCollection.cs
- GAC.cs
- BitmapEncoder.cs
- XmlCharType.cs
- MULTI_QI.cs
- DataSourceProvider.cs
- RenamedEventArgs.cs
- IUnknownConstantAttribute.cs
- KeyInfo.cs
- GestureRecognitionResult.cs
- DataContractJsonSerializerOperationFormatter.cs
- HandledEventArgs.cs
- URIFormatException.cs
- TextFormatter.cs
- WindowsGraphics2.cs
- PhysicalFontFamily.cs
- XMLSyntaxException.cs
- ObjectStorage.cs
- SchemeSettingElement.cs
- ScriptReference.cs
- ConnectionPoolManager.cs
- SortAction.cs
- IIS7WorkerRequest.cs
- XmlUtilWriter.cs
- IChannel.cs
- TextEditorLists.cs
- XMLSyntaxException.cs
- itemelement.cs
- GiveFeedbackEventArgs.cs
- SafeBuffer.cs
- ImageButton.cs
- DbDataRecord.cs
- CalendarTable.cs
- EdmTypeAttribute.cs
- ProfileSettings.cs
- ExpressionList.cs
- ExtendedTransformFactory.cs
- UmAlQuraCalendar.cs
- PanelStyle.cs
- PropertyGrid.cs
- AppDomainManager.cs
- Currency.cs
- TileBrush.cs
- CompiledRegexRunner.cs
- DesignerProperties.cs
- XmlWriter.cs
- ImplicitInputBrush.cs
- ThicknessAnimationUsingKeyFrames.cs
- DataGridViewSortCompareEventArgs.cs
- DataGridViewDataErrorEventArgs.cs
- WebPartDisplayModeEventArgs.cs
- PreviewPageInfo.cs
- ImpersonationContext.cs
- WebAdminConfigurationHelper.cs
- Visual3D.cs
- TaskDesigner.cs
- UiaCoreApi.cs
- ToolboxControl.cs
- ThicknessConverter.cs
- ResourcesChangeInfo.cs
- LongValidatorAttribute.cs
- BooleanProjectedSlot.cs
- PropertyPathConverter.cs
- DataServiceExpressionVisitor.cs
- SessionStateModule.cs
- ManagedIStream.cs
- DesignerActionMethodItem.cs
- ComboBoxAutomationPeer.cs
- PrePrepareMethodAttribute.cs
- DesignSurfaceManager.cs
- MDIClient.cs
- GridLengthConverter.cs
- UdpReplyToBehavior.cs
- StaticTextPointer.cs
- FileLevelControlBuilderAttribute.cs
- RotateTransform.cs
- _Events.cs
- Matrix.cs
- PropertyTabAttribute.cs
- SchemaTableOptionalColumn.cs
- SqlStatistics.cs
- DataTrigger.cs
- MetaForeignKeyColumn.cs
- CreateUserWizardStep.cs
- ValueTypeFixupInfo.cs
- UInt64.cs
- VersionPair.cs
- NonBatchDirectoryCompiler.cs
- ConvertEvent.cs
- SerializationException.cs