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
- _DigestClient.cs
- FixedStringLookup.cs
- GenericTypeParameterBuilder.cs
- TimeoutValidationAttribute.cs
- ConfigurationLocationCollection.cs
- SortKey.cs
- TypeResolver.cs
- TimeSpanValidator.cs
- SoapIncludeAttribute.cs
- UnmanagedMemoryStreamWrapper.cs
- HTMLTextWriter.cs
- ListViewGroupCollectionEditor.cs
- WebPartConnectionsConnectVerb.cs
- WindowsAuthenticationModule.cs
- ResourceDefaultValueAttribute.cs
- EditorPartChrome.cs
- URLAttribute.cs
- HijriCalendar.cs
- Bits.cs
- ListBoxDesigner.cs
- TextAction.cs
- AnonymousIdentificationSection.cs
- DeferredSelectedIndexReference.cs
- CompilerGeneratedAttribute.cs
- GetImportFileNameRequest.cs
- Policy.cs
- WebPartConnectVerb.cs
- MimeXmlReflector.cs
- SystemDropShadowChrome.cs
- PkcsUtils.cs
- ProviderConnectionPoint.cs
- TypeInformation.cs
- FileIOPermission.cs
- CallbackHandler.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- CodeVariableReferenceExpression.cs
- WebPartManager.cs
- InvokePatternIdentifiers.cs
- SoapElementAttribute.cs
- PnrpPeerResolverBindingElement.cs
- DashStyle.cs
- TraceHandler.cs
- WorkflowStateRollbackService.cs
- ExpressionBinding.cs
- CalendarDesigner.cs
- CompositionTarget.cs
- XmlElementList.cs
- WorkflowQueueInfo.cs
- PersonalizationProvider.cs
- SrgsDocument.cs
- securitycriticaldata.cs
- QuerySelectOp.cs
- _NegoStream.cs
- AnnotationComponentChooser.cs
- PersistenceContextEnlistment.cs
- KoreanLunisolarCalendar.cs
- ActivityBuilder.cs
- DownloadProgressEventArgs.cs
- SqlDataSourceQueryEditor.cs
- ArcSegment.cs
- DynamicILGenerator.cs
- OSFeature.cs
- Brushes.cs
- Math.cs
- TypeDependencyAttribute.cs
- SchemaTableOptionalColumn.cs
- Light.cs
- Utilities.cs
- ExtenderControl.cs
- HMACMD5.cs
- WebPartMovingEventArgs.cs
- OdbcConnectionHandle.cs
- Constraint.cs
- RequestCacheEntry.cs
- UpdateException.cs
- ChangeBlockUndoRecord.cs
- WindowsStatic.cs
- RenderOptions.cs
- UseLicense.cs
- Brush.cs
- GacUtil.cs
- Win32.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- TTSEvent.cs
- SharedConnectionListener.cs
- TabControlCancelEvent.cs
- PrintDocument.cs
- QuerySubExprEliminator.cs
- PrinterSettings.cs
- RadioButton.cs
- BamlLocalizationDictionary.cs
- MembershipValidatePasswordEventArgs.cs
- IndicCharClassifier.cs
- TypeDescriptor.cs
- BaseValidator.cs
- WindowsFormsHost.cs
- InternalConfigEventArgs.cs
- FixedHyperLink.cs
- FilterQuery.cs
- HybridObjectCache.cs