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
- BinaryObjectWriter.cs
- DrawingImage.cs
- KnownBoxes.cs
- ComponentSerializationService.cs
- SigningCredentials.cs
- DynamicMetaObject.cs
- CompiledXpathExpr.cs
- ConfigurationStrings.cs
- SmtpTransport.cs
- DrawingState.cs
- UnauthorizedAccessException.cs
- SQLInt16.cs
- ComboBoxDesigner.cs
- BuildProviderAppliesToAttribute.cs
- ClaimComparer.cs
- CompiledQuery.cs
- RegexCompiler.cs
- complextypematerializer.cs
- ComponentConverter.cs
- Path.cs
- ViewManager.cs
- Function.cs
- FormsAuthentication.cs
- LineVisual.cs
- ClockGroup.cs
- PriorityQueue.cs
- AssemblyBuilder.cs
- SymmetricKey.cs
- PerformanceCounterPermission.cs
- SqlUserDefinedTypeAttribute.cs
- RootBrowserWindowProxy.cs
- VarRefManager.cs
- TypedColumnHandler.cs
- _TimerThread.cs
- AstTree.cs
- CategoryValueConverter.cs
- ZipIOLocalFileDataDescriptor.cs
- RegistrySecurity.cs
- SqlCachedBuffer.cs
- BaseCAMarshaler.cs
- MediaTimeline.cs
- CompilerCollection.cs
- DataGrid.cs
- COAUTHINFO.cs
- listitem.cs
- ObjectPersistData.cs
- MonitoringDescriptionAttribute.cs
- XamlPointCollectionSerializer.cs
- PropertyBuilder.cs
- XmlDownloadManager.cs
- IsolatedStorage.cs
- CodeLabeledStatement.cs
- XAMLParseException.cs
- RealProxy.cs
- TriggerAction.cs
- DataGridTextBoxColumn.cs
- Subtree.cs
- CornerRadius.cs
- HtmlWindow.cs
- TransformGroup.cs
- Unit.cs
- DataIdProcessor.cs
- DomainUpDown.cs
- ConfigurationSectionCollection.cs
- XmlSchemaComplexType.cs
- DocumentGridContextMenu.cs
- TreeNodeStyle.cs
- ReadOnlyHierarchicalDataSourceView.cs
- FillErrorEventArgs.cs
- HandleInitializationContext.cs
- ProcessModuleCollection.cs
- AppDomainManager.cs
- XsltLoader.cs
- EntityStoreSchemaGenerator.cs
- RequestTimeoutManager.cs
- InfoCardSymmetricCrypto.cs
- MarkupProperty.cs
- LockingPersistenceProvider.cs
- TimersDescriptionAttribute.cs
- Storyboard.cs
- WsatServiceAddress.cs
- PageParserFilter.cs
- XslException.cs
- RelOps.cs
- dsa.cs
- WebPartMovingEventArgs.cs
- OdbcParameter.cs
- ObjectAnimationBase.cs
- JsonReader.cs
- ExpandedWrapper.cs
- XPathCompileException.cs
- ToolStripTemplateNode.cs
- MenuRenderer.cs
- MimeFormReflector.cs
- ResourcesGenerator.cs
- DataListItemCollection.cs
- RewritingProcessor.cs
- SafeLibraryHandle.cs
- TrustManagerPromptUI.cs
- ApplicationServiceHelper.cs