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
- IDReferencePropertyAttribute.cs
- UInt32.cs
- Point3DConverter.cs
- VScrollProperties.cs
- XmlAnyAttributeAttribute.cs
- RequestResponse.cs
- WindowsPen.cs
- RefType.cs
- Vector3DConverter.cs
- DBConnection.cs
- SqlDelegatedTransaction.cs
- OutputCacheEntry.cs
- QilCloneVisitor.cs
- AssociationSet.cs
- Int32Rect.cs
- BamlMapTable.cs
- Transform.cs
- XmlText.cs
- GCHandleCookieTable.cs
- arclist.cs
- ResourceReader.cs
- MessageQueuePermissionEntry.cs
- Int16KeyFrameCollection.cs
- ThreadExceptionEvent.cs
- TdsRecordBufferSetter.cs
- MemberJoinTreeNode.cs
- StylusPointProperty.cs
- WhiteSpaceTrimStringConverter.cs
- ConfigXmlComment.cs
- VariableDesigner.xaml.cs
- OracleConnectionFactory.cs
- JoinTreeNode.cs
- HotSpot.cs
- MethodToken.cs
- DynamicDataResources.Designer.cs
- PeerNameRecordCollection.cs
- MasterPageParser.cs
- ResXResourceSet.cs
- SecurityChannelFaultConverter.cs
- XmlDigitalSignatureProcessor.cs
- CursorConverter.cs
- SubMenuStyle.cs
- XmlSchemaAttributeGroupRef.cs
- Deflater.cs
- XmlnsDefinitionAttribute.cs
- EntityDataSourceStatementEditor.cs
- AdvancedBindingPropertyDescriptor.cs
- ModelPerspective.cs
- NavigationCommands.cs
- StringBuilder.cs
- CodeTypeReferenceExpression.cs
- WindowPattern.cs
- CommandLibraryHelper.cs
- StreamWithDictionary.cs
- SelectionChangedEventArgs.cs
- sitestring.cs
- CurrentChangingEventManager.cs
- SqlClientFactory.cs
- ControlBuilderAttribute.cs
- WebBrowserContainer.cs
- PointValueSerializer.cs
- SectionInformation.cs
- ListViewDataItem.cs
- ListViewUpdatedEventArgs.cs
- EditCommandColumn.cs
- CharKeyFrameCollection.cs
- HttpRawResponse.cs
- DiscreteKeyFrames.cs
- XmlWellformedWriter.cs
- HandlerBase.cs
- XamlDesignerSerializationManager.cs
- TransformerInfo.cs
- BufferBuilder.cs
- FormatConvertedBitmap.cs
- ScriptManagerProxy.cs
- SqlDataSourceQueryEditorForm.cs
- precedingquery.cs
- XmlCharCheckingWriter.cs
- GroupStyle.cs
- AssemblyBuilder.cs
- AvTrace.cs
- TextEditorMouse.cs
- ImageSource.cs
- BitmapScalingModeValidation.cs
- ProfilePropertySettings.cs
- TypeReference.cs
- ConfigurationErrorsException.cs
- PageAsyncTask.cs
- MimeFormReflector.cs
- ObjectSet.cs
- VectorAnimationUsingKeyFrames.cs
- DbMetaDataFactory.cs
- GetWinFXPath.cs
- ThreadExceptionEvent.cs
- RuleSettings.cs
- ICspAsymmetricAlgorithm.cs
- XComponentModel.cs
- XmlKeywords.cs
- HelpProvider.cs
- DuplicateWaitObjectException.cs