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
- ParseElementCollection.cs
- FixedTextBuilder.cs
- PropertyEmitterBase.cs
- DbRetry.cs
- NamespaceDecl.cs
- AmbiguousMatchException.cs
- OleDbDataReader.cs
- DayRenderEvent.cs
- StrokeCollection2.cs
- messageonlyhwndwrapper.cs
- DbDataAdapter.cs
- NetworkInformationException.cs
- Freezable.cs
- StylusCaptureWithinProperty.cs
- GenericTypeParameterBuilder.cs
- PackageStore.cs
- ProviderConnectionPoint.cs
- DefaultValidator.cs
- AdvancedBindingEditor.cs
- Geometry.cs
- COM2IProvidePropertyBuilderHandler.cs
- ToolStripSplitStackLayout.cs
- NamedObject.cs
- JoinGraph.cs
- SqlFileStream.cs
- ClickablePoint.cs
- UrlPath.cs
- BufferedStream2.cs
- Ref.cs
- DataServiceHost.cs
- WebConfigurationManager.cs
- ToolStripContentPanelRenderEventArgs.cs
- SoapClientProtocol.cs
- LongValidatorAttribute.cs
- BamlMapTable.cs
- CacheOutputQuery.cs
- iisPickupDirectory.cs
- DbConnectionStringBuilder.cs
- HttpResponseHeader.cs
- GridViewDeleteEventArgs.cs
- EventLogPermissionAttribute.cs
- CapabilitiesSection.cs
- SendSecurityHeaderElement.cs
- TimelineGroup.cs
- BamlRecordHelper.cs
- MetadataLocation.cs
- DataService.cs
- UserNameSecurityTokenParameters.cs
- SqlClientMetaDataCollectionNames.cs
- DataGridItem.cs
- SymbolEqualComparer.cs
- coordinatorfactory.cs
- WebPartExportVerb.cs
- _LocalDataStore.cs
- MsmqIntegrationBindingElement.cs
- TickBar.cs
- XmlSerializerFormatAttribute.cs
- LookupBindingPropertiesAttribute.cs
- SqlPersonalizationProvider.cs
- _ScatterGatherBuffers.cs
- ApplicationManager.cs
- TypeUnloadedException.cs
- DictionaryChange.cs
- SecurityHeaderLayout.cs
- StatusBarPanel.cs
- StaticExtension.cs
- FormsAuthenticationUserCollection.cs
- ActivityDefaults.cs
- SafeFindHandle.cs
- TypeDescriptor.cs
- DbSetClause.cs
- RSAOAEPKeyExchangeFormatter.cs
- EventLogStatus.cs
- MasterPageParser.cs
- UIElement.cs
- ProcessThreadCollection.cs
- EntityTypeEmitter.cs
- ArgumentOutOfRangeException.cs
- SqlBulkCopyColumnMapping.cs
- CurrencyWrapper.cs
- HttpHostedTransportConfiguration.cs
- ListViewTableRow.cs
- BindingsCollection.cs
- CopyNodeSetAction.cs
- Base64Encoding.cs
- MultiView.cs
- XmlTextReaderImpl.cs
- GeneralTransformGroup.cs
- TerminateDesigner.cs
- RangeBase.cs
- SqlNodeAnnotation.cs
- ZipIOBlockManager.cs
- PropertyStore.cs
- MemoryStream.cs
- DataGridItemAttachedStorage.cs
- ToolStripOverflow.cs
- Authorization.cs
- InternalDuplexChannelFactory.cs
- CustomAttribute.cs
- DoubleLinkList.cs