Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / Serialization / System / Xml / XmlDictionaryString.cs / 1305376 / XmlDictionaryString.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.Xml { using System; using System.Xml; using System.Text; using System.Diagnostics; using System.Runtime.Serialization; public class XmlDictionaryString { internal const int MinKey = 0; internal const int MaxKey = int.MaxValue / 4; IXmlDictionary dictionary; string value; int key; byte[] buffer; static EmptyStringDictionary emptyStringDictionary = new EmptyStringDictionary(); public XmlDictionaryString(IXmlDictionary dictionary, string value, int key) { if (dictionary == null) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("dictionary")); if (value == null) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("value")); if (key < MinKey || key > MaxKey) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("key", SR.GetString(SR.ValueMustBeInRange, MinKey, MaxKey))); this.dictionary = dictionary; this.value = value; this.key = key; } static internal string GetString(XmlDictionaryString s) { if (s == null) return null; return s.Value; } static public XmlDictionaryString Empty { get { return emptyStringDictionary.EmptyString; } } public IXmlDictionary Dictionary { get { return dictionary; } } public int Key { get { return key; } } public string Value { get { return value; } } internal byte[] ToUTF8() { if (buffer == null) buffer = System.Text.Encoding.UTF8.GetBytes(value); return buffer; } public override string ToString() { return value; } class EmptyStringDictionary : IXmlDictionary { XmlDictionaryString empty; public EmptyStringDictionary() { empty = new XmlDictionaryString(this, string.Empty, 0); } public XmlDictionaryString EmptyString { get { return empty; } } public bool TryLookup(string value, out XmlDictionaryString result) { if (value == null) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("value"); if (value.Length == 0) { result = empty; return true; } result = null; return false; } public bool TryLookup(int key, out XmlDictionaryString result) { if (key == 0) { result = empty; return true; } result = null; return false; } public bool TryLookup(XmlDictionaryString value, out XmlDictionaryString result) { if (value == null) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("value")); if (value.Dictionary != this) { result = null; return false; } result = value; return true; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.Xml { using System; using System.Xml; using System.Text; using System.Diagnostics; using System.Runtime.Serialization; public class XmlDictionaryString { internal const int MinKey = 0; internal const int MaxKey = int.MaxValue / 4; IXmlDictionary dictionary; string value; int key; byte[] buffer; static EmptyStringDictionary emptyStringDictionary = new EmptyStringDictionary(); public XmlDictionaryString(IXmlDictionary dictionary, string value, int key) { if (dictionary == null) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("dictionary")); if (value == null) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("value")); if (key < MinKey || key > MaxKey) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("key", SR.GetString(SR.ValueMustBeInRange, MinKey, MaxKey))); this.dictionary = dictionary; this.value = value; this.key = key; } static internal string GetString(XmlDictionaryString s) { if (s == null) return null; return s.Value; } static public XmlDictionaryString Empty { get { return emptyStringDictionary.EmptyString; } } public IXmlDictionary Dictionary { get { return dictionary; } } public int Key { get { return key; } } public string Value { get { return value; } } internal byte[] ToUTF8() { if (buffer == null) buffer = System.Text.Encoding.UTF8.GetBytes(value); return buffer; } public override string ToString() { return value; } class EmptyStringDictionary : IXmlDictionary { XmlDictionaryString empty; public EmptyStringDictionary() { empty = new XmlDictionaryString(this, string.Empty, 0); } public XmlDictionaryString EmptyString { get { return empty; } } public bool TryLookup(string value, out XmlDictionaryString result) { if (value == null) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("value"); if (value.Length == 0) { result = empty; return true; } result = null; return false; } public bool TryLookup(int key, out XmlDictionaryString result) { if (key == 0) { result = empty; return true; } result = null; return false; } public bool TryLookup(XmlDictionaryString value, out XmlDictionaryString result) { if (value == null) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("value")); if (value.Dictionary != this) { result = null; return false; } result = value; return true; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CheckBoxList.cs
- XmlNamedNodeMap.cs
- SHA512CryptoServiceProvider.cs
- ReadContentAsBinaryHelper.cs
- ProjectionCamera.cs
- BuilderInfo.cs
- UpdateManifestForBrowserApplication.cs
- Selection.cs
- InfoCardCryptoHelper.cs
- ServiceCredentialsElement.cs
- XmlSerializerFactory.cs
- PeerOutputChannel.cs
- UIElement.cs
- PartitionerQueryOperator.cs
- Rotation3DAnimation.cs
- DetailsViewUpdatedEventArgs.cs
- FactoryId.cs
- JobDuplex.cs
- EntityClassGenerator.cs
- Endpoint.cs
- XmlDomTextWriter.cs
- ButtonChrome.cs
- EntityContainerEmitter.cs
- MailHeaderInfo.cs
- SlipBehavior.cs
- DataGridTableCollection.cs
- KoreanCalendar.cs
- SimpleTextLine.cs
- DurableEnlistmentState.cs
- WindowsRebar.cs
- DelegatingConfigHost.cs
- ObjectNotFoundException.cs
- RoutedEventArgs.cs
- WindowsListViewSubItem.cs
- ListControlBoundActionList.cs
- DomNameTable.cs
- ItemList.cs
- RegisteredArrayDeclaration.cs
- EventLogEntryCollection.cs
- TrustLevelCollection.cs
- TrackingProfile.cs
- RequestCacheValidator.cs
- SettingsPropertyValueCollection.cs
- DecoratedNameAttribute.cs
- Compress.cs
- NamespaceList.cs
- PackageStore.cs
- TextServicesProperty.cs
- FormsAuthenticationConfiguration.cs
- LifetimeMonitor.cs
- SafeArrayTypeMismatchException.cs
- XmlDictionaryReaderQuotas.cs
- TrackBar.cs
- GridViewRowPresenter.cs
- FloaterParagraph.cs
- ObjectQuery.cs
- ConfigXmlSignificantWhitespace.cs
- FilteredXmlReader.cs
- SHA256CryptoServiceProvider.cs
- TokenBasedSet.cs
- InvalidCastException.cs
- DataGridColumnCollection.cs
- Clock.cs
- DbParameterCollection.cs
- XmlSchemaAnyAttribute.cs
- wgx_sdk_version.cs
- DataFormat.cs
- Token.cs
- EmbossBitmapEffect.cs
- VisualTreeUtils.cs
- InlineUIContainer.cs
- AutomationEventArgs.cs
- bindurihelper.cs
- XmlSchemaSimpleContentExtension.cs
- Psha1DerivedKeyGenerator.cs
- XPathDocumentIterator.cs
- HashRepartitionEnumerator.cs
- Speller.cs
- ASCIIEncoding.cs
- SinglePageViewer.cs
- XsltSettings.cs
- DesignTimeTemplateParser.cs
- SHA256Cng.cs
- _IPv6Address.cs
- QualificationDataAttribute.cs
- QuaternionRotation3D.cs
- SimpleWorkerRequest.cs
- ConfigurationException.cs
- TcpTransportBindingElement.cs
- TagNameToTypeMapper.cs
- DesignerToolboxInfo.cs
- EventMappingSettingsCollection.cs
- ToolStripRenderer.cs
- ToolBarButtonDesigner.cs
- SqlError.cs
- DataReaderContainer.cs
- MethodCallTranslator.cs
- EmissiveMaterial.cs
- WpfKnownMember.cs
- TextInfo.cs