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
- ProxyGenerator.cs
- Inline.cs
- SchemaImporterExtensionElement.cs
- FileLevelControlBuilderAttribute.cs
- CompoundFileReference.cs
- WindowsListViewItemStartMenu.cs
- User.cs
- infer.cs
- FrameworkReadOnlyPropertyMetadata.cs
- DbDeleteCommandTree.cs
- ProtocolsConfiguration.cs
- UInt64Storage.cs
- Queue.cs
- MarkupCompilePass1.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- DataSourceXmlTextReader.cs
- PolyQuadraticBezierSegment.cs
- AsyncPostBackErrorEventArgs.cs
- Geometry.cs
- ServiceDescription.cs
- GridSplitter.cs
- IgnoreFileBuildProvider.cs
- SafeRightsManagementHandle.cs
- AudioFormatConverter.cs
- DrawItemEvent.cs
- CharacterHit.cs
- XhtmlBasicCalendarAdapter.cs
- ClientBuildManagerCallback.cs
- ControlCommandSet.cs
- EventDescriptor.cs
- Control.cs
- ListParaClient.cs
- BatchParser.cs
- TypeSystemProvider.cs
- MaterialGroup.cs
- StateMachineSubscriptionManager.cs
- SortedList.cs
- InstanceValue.cs
- CodeSnippetCompileUnit.cs
- EventSourceCreationData.cs
- HtmlInputReset.cs
- ObjectListTitleAttribute.cs
- DecodeHelper.cs
- XmlDataImplementation.cs
- EventSinkHelperWriter.cs
- UserControlCodeDomTreeGenerator.cs
- InternalPermissions.cs
- ToolStripItemClickedEventArgs.cs
- SmtpReplyReader.cs
- GradientStop.cs
- AssemblyAttributesGoHere.cs
- DiscreteKeyFrames.cs
- ValueUtilsSmi.cs
- SoapEnumAttribute.cs
- InvalidEnumArgumentException.cs
- TextServicesLoader.cs
- StrongNameUtility.cs
- UnsafeNativeMethods.cs
- WebConfigurationHost.cs
- TextServicesProperty.cs
- Point3DAnimationBase.cs
- WizardSideBarListControlItem.cs
- CryptoProvider.cs
- HeaderCollection.cs
- XmlDocumentSerializer.cs
- Odbc32.cs
- ThreadStateException.cs
- XmlAttributeCollection.cs
- StyleCollectionEditor.cs
- BaseTemplateCodeDomTreeGenerator.cs
- MsmqIntegrationInputChannel.cs
- XsltFunctions.cs
- ColumnResizeAdorner.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- TransactionFormatter.cs
- ProxyManager.cs
- NetworkStream.cs
- SchemaLookupTable.cs
- TdsParserHelperClasses.cs
- DebugControllerThread.cs
- RelationshipConverter.cs
- XmlSchemaAttributeGroupRef.cs
- COSERVERINFO.cs
- SymbolType.cs
- TextDecorationUnitValidation.cs
- __FastResourceComparer.cs
- MetadataUtilsSmi.cs
- OverlappedAsyncResult.cs
- CompilerErrorCollection.cs
- AbsoluteQuery.cs
- SecureUICommand.cs
- FontCacheUtil.cs
- HitTestDrawingContextWalker.cs
- HMACSHA384.cs
- _TimerThread.cs
- ParseChildrenAsPropertiesAttribute.cs
- Parser.cs
- QueuePathDialog.cs
- SqlCacheDependency.cs
- NameObjectCollectionBase.cs