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
- ReadWriteSpinLock.cs
- ReferenceSchema.cs
- ObjectListComponentEditor.cs
- Predicate.cs
- WsdlWriter.cs
- BaseDataBoundControl.cs
- Page.cs
- UshortList2.cs
- X509Certificate2Collection.cs
- UdpUtility.cs
- TargetConverter.cs
- IpcPort.cs
- ClientProtocol.cs
- LexicalChunk.cs
- NewItemsContextMenuStrip.cs
- WindowsGraphics2.cs
- ServiceContractGenerationContext.cs
- Line.cs
- SmiContextFactory.cs
- WorkflowTransactionOptions.cs
- OlePropertyStructs.cs
- WindowsTreeView.cs
- AuthorizationSection.cs
- ColumnBinding.cs
- PassportPrincipal.cs
- DiagnosticEventProvider.cs
- NativeWindow.cs
- Image.cs
- XmlName.cs
- ListViewGroupConverter.cs
- SourceInterpreter.cs
- ValueTypeFixupInfo.cs
- XmlDataImplementation.cs
- ControlCollection.cs
- RequestCachePolicy.cs
- ClientFormsIdentity.cs
- EncoderFallback.cs
- HttpApplicationFactory.cs
- SqlDependency.cs
- HtmlElementCollection.cs
- EditableLabelControl.cs
- HMACRIPEMD160.cs
- TextDecorationUnitValidation.cs
- X509SecurityToken.cs
- MethodMessage.cs
- DataGridViewColumnEventArgs.cs
- ExternalException.cs
- DataRecordInternal.cs
- DataComponentGenerator.cs
- LocatorBase.cs
- ViewBox.cs
- SqlUtils.cs
- TraceSwitch.cs
- CompositeDataBoundControl.cs
- RoleExceptions.cs
- MultiByteCodec.cs
- LinqDataSourceContextData.cs
- StaticFileHandler.cs
- DependencyPropertyDescriptor.cs
- ExtensibleClassFactory.cs
- AsymmetricSignatureFormatter.cs
- WizardStepBase.cs
- BindingCompleteEventArgs.cs
- XmlSchemaSequence.cs
- RemotingException.cs
- ArrayElementGridEntry.cs
- SingleKeyFrameCollection.cs
- CompilerErrorCollection.cs
- RewritingProcessor.cs
- DrawingState.cs
- CustomCredentialPolicy.cs
- DataViewManagerListItemTypeDescriptor.cs
- OleDbEnumerator.cs
- DoubleUtil.cs
- OperationContext.cs
- ConfigXmlText.cs
- MarginsConverter.cs
- PublisherIdentityPermission.cs
- StickyNote.cs
- UserControl.cs
- XmlValueConverter.cs
- ColumnReorderedEventArgs.cs
- WebPartConnectVerb.cs
- CustomErrorCollection.cs
- Pair.cs
- HttpListenerContext.cs
- ParameterRetriever.cs
- SchemaComplexType.cs
- JoinSymbol.cs
- ToolStripPanelCell.cs
- DataGridColumnCollection.cs
- XmlComplianceUtil.cs
- BaseCollection.cs
- FileInfo.cs
- ListenerTraceUtility.cs
- VerticalAlignConverter.cs
- QueryableDataSourceEditData.cs
- FileUtil.cs
- ExpandedWrapper.cs
- TextBoxBase.cs