Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / Serialization / System / Runtime / Serialization / XmlSerializableReader.cs / 1305376 / XmlSerializableReader.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Runtime.Serialization { using System.IO; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; using System.Diagnostics; internal class XmlSerializableReader : XmlReader, IXmlLineInfo, IXmlTextParser { XmlReaderDelegator xmlReader; int startDepth; bool isRootEmptyElement; XmlReader innerReader; XmlReader InnerReader { get { return innerReader; } } internal void BeginRead(XmlReaderDelegator xmlReader) { if (xmlReader.NodeType != XmlNodeType.Element) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializerReadContext.CreateUnexpectedStateException(XmlNodeType.Element, xmlReader)); this.xmlReader = xmlReader; this.startDepth = xmlReader.Depth; this.innerReader = xmlReader.UnderlyingReader; this.isRootEmptyElement = InnerReader.IsEmptyElement; } internal void EndRead() { if (isRootEmptyElement) xmlReader.Read(); else { if (xmlReader.IsStartElement() && xmlReader.Depth == startDepth) xmlReader.Read(); while (xmlReader.Depth > startDepth) { if (!xmlReader.Read()) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializerReadContext.CreateUnexpectedStateException(XmlNodeType.EndElement, xmlReader)); } } } public override bool Read() { XmlReader reader = this.InnerReader; if ( reader.Depth == startDepth ) { if ( reader.NodeType == XmlNodeType.EndElement || ( reader.NodeType == XmlNodeType.Element && reader.IsEmptyElement ) ) { return false; } } return reader.Read(); } public override void Close() { throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(SR.GetString(SR.IXmlSerializableIllegalOperation))); } public override XmlReaderSettings Settings { get { return InnerReader.Settings; } } public override XmlNodeType NodeType { get { return InnerReader.NodeType; } } public override string Name { get { return InnerReader.Name; } } public override string LocalName { get { return InnerReader.LocalName; } } public override string NamespaceURI { get { return InnerReader.NamespaceURI; } } public override string Prefix { get { return InnerReader.Prefix; } } public override bool HasValue { get { return InnerReader.HasValue; } } public override string Value { get { return InnerReader.Value; } } public override int Depth { get { return InnerReader.Depth; } } public override string BaseURI { get { return InnerReader.BaseURI; } } public override bool IsEmptyElement { get { return InnerReader.IsEmptyElement; } } public override bool IsDefault { get { return InnerReader.IsDefault; } } public override char QuoteChar { get { return InnerReader.QuoteChar; } } public override XmlSpace XmlSpace { get { return InnerReader.XmlSpace; } } public override string XmlLang { get { return InnerReader.XmlLang; } } public override IXmlSchemaInfo SchemaInfo { get { return InnerReader.SchemaInfo; } } public override Type ValueType { get { return InnerReader.ValueType; } } public override int AttributeCount { get { return InnerReader.AttributeCount; } } public override string this[int i] { get { return InnerReader[i]; } } public override string this[string name] { get { return InnerReader[name]; } } public override string this[string name, string namespaceURI] { get { return InnerReader[name, namespaceURI]; } } public override bool EOF { get { return InnerReader.EOF; } } public override ReadState ReadState { get { return InnerReader.ReadState; } } public override XmlNameTable NameTable { get { return InnerReader.NameTable; } } public override bool CanResolveEntity { get { return InnerReader.CanResolveEntity; } } public override bool CanReadBinaryContent { get { return InnerReader.CanReadBinaryContent; } } public override bool CanReadValueChunk { get { return InnerReader.CanReadValueChunk; } } public override bool HasAttributes { get { return InnerReader.HasAttributes; } } public override string GetAttribute(string name) { return InnerReader.GetAttribute(name); } public override string GetAttribute(string name, string namespaceURI) { return InnerReader.GetAttribute(name, namespaceURI); } public override string GetAttribute(int i) { return InnerReader.GetAttribute(i); } public override bool MoveToAttribute(string name) { return InnerReader.MoveToAttribute(name); } public override bool MoveToAttribute(string name, string ns) { return InnerReader.MoveToAttribute(name, ns); } public override void MoveToAttribute(int i) { InnerReader.MoveToAttribute(i); } public override bool MoveToFirstAttribute() { return InnerReader.MoveToFirstAttribute(); } public override bool MoveToNextAttribute() { return InnerReader.MoveToNextAttribute(); } public override bool MoveToElement() { return InnerReader.MoveToElement(); } public override string LookupNamespace(string prefix) { return InnerReader.LookupNamespace(prefix); } public override bool ReadAttributeValue() { return InnerReader.ReadAttributeValue(); } public override void ResolveEntity() { InnerReader.ResolveEntity(); } public override bool IsStartElement() { return InnerReader.IsStartElement(); } public override bool IsStartElement(string name) { return InnerReader.IsStartElement(name); } public override bool IsStartElement(string localname, string ns) { return InnerReader.IsStartElement(localname, ns); } public override XmlNodeType MoveToContent() { return InnerReader.MoveToContent(); } public override object ReadContentAsObject() { return InnerReader.ReadContentAsObject(); } public override bool ReadContentAsBoolean() { return InnerReader.ReadContentAsBoolean(); } public override DateTime ReadContentAsDateTime() { return InnerReader.ReadContentAsDateTime(); } public override double ReadContentAsDouble() { return InnerReader.ReadContentAsDouble(); } public override int ReadContentAsInt() { return InnerReader.ReadContentAsInt(); } public override long ReadContentAsLong() { return InnerReader.ReadContentAsLong(); } public override string ReadContentAsString() { return InnerReader.ReadContentAsString(); } public override object ReadContentAs(Type returnType, IXmlNamespaceResolver namespaceResolver) { return InnerReader.ReadContentAs(returnType, namespaceResolver); } public override int ReadContentAsBase64(byte[] buffer, int index, int count) { return InnerReader.ReadContentAsBase64(buffer, index, count); } public override int ReadContentAsBinHex(byte[] buffer, int index, int count) { return InnerReader.ReadContentAsBinHex(buffer, index, count); } public override int ReadValueChunk(char[] buffer, int index, int count) { return InnerReader.ReadValueChunk(buffer, index, count); } public override string ReadString() { return InnerReader.ReadString(); } // IXmlTextParser members bool IXmlTextParser.Normalized { get { IXmlTextParser xmlTextParser = InnerReader as IXmlTextParser; return (xmlTextParser == null) ? xmlReader.Normalized : xmlTextParser.Normalized; } set { IXmlTextParser xmlTextParser = InnerReader as IXmlTextParser; if (xmlTextParser == null) xmlReader.Normalized = value; else xmlTextParser.Normalized = value; } } WhitespaceHandling IXmlTextParser.WhitespaceHandling { get { IXmlTextParser xmlTextParser = InnerReader as IXmlTextParser; return (xmlTextParser == null) ? xmlReader.WhitespaceHandling : xmlTextParser.WhitespaceHandling; } set { IXmlTextParser xmlTextParser = InnerReader as IXmlTextParser; if (xmlTextParser == null) xmlReader.WhitespaceHandling = value; else xmlTextParser.WhitespaceHandling = value; } } // IXmlLineInfo members bool IXmlLineInfo.HasLineInfo() { IXmlLineInfo xmlLineInfo = InnerReader as IXmlLineInfo; return (xmlLineInfo == null) ? xmlReader.HasLineInfo() : xmlLineInfo.HasLineInfo(); } int IXmlLineInfo.LineNumber { get { IXmlLineInfo xmlLineInfo = InnerReader as IXmlLineInfo; return (xmlLineInfo == null) ? xmlReader.LineNumber : xmlLineInfo.LineNumber; } } int IXmlLineInfo.LinePosition { get { IXmlLineInfo xmlLineInfo = InnerReader as IXmlLineInfo; return (xmlLineInfo == null) ? xmlReader.LinePosition : xmlLineInfo.LinePosition; } } } } // 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
- HttpWriter.cs
- ResourceManager.cs
- SubqueryRules.cs
- XmlSchemaInferenceException.cs
- XmlSchemaAttributeGroup.cs
- LicenseException.cs
- DeflateStream.cs
- DateTimeUtil.cs
- SemanticBasicElement.cs
- CommandHelper.cs
- ObjectItemCollectionAssemblyCacheEntry.cs
- XmlSchemaAttributeGroupRef.cs
- SmtpLoginAuthenticationModule.cs
- ComponentEvent.cs
- DataContractAttribute.cs
- MenuAdapter.cs
- DataTableReaderListener.cs
- OutOfMemoryException.cs
- TimeoutException.cs
- RewritingPass.cs
- ValidationHelpers.cs
- WindowsNonControl.cs
- Partitioner.cs
- IOException.cs
- PagesSection.cs
- ConfigurationSectionGroup.cs
- Highlights.cs
- JoinTreeNode.cs
- TextBox.cs
- InheritedPropertyChangedEventArgs.cs
- Compiler.cs
- CodeGenerator.cs
- BaseProcessProtocolHandler.cs
- LinkDescriptor.cs
- UInt64Converter.cs
- UIPermission.cs
- ProcessHost.cs
- BamlResourceSerializer.cs
- ComboBoxItem.cs
- DynamicQueryableWrapper.cs
- metadatamappinghashervisitor.hashsourcebuilder.cs
- LongMinMaxAggregationOperator.cs
- ByteKeyFrameCollection.cs
- LinkedResource.cs
- WinFormsSpinner.cs
- ChameleonKey.cs
- recordstate.cs
- AuthenticodeSignatureInformation.cs
- CacheAxisQuery.cs
- VerifyHashRequest.cs
- StrongName.cs
- IISMapPath.cs
- MethodBuilderInstantiation.cs
- PeerNameResolver.cs
- SendKeys.cs
- StandardOleMarshalObject.cs
- DescriptionAttribute.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- LinearGradientBrush.cs
- ComponentCodeDomSerializer.cs
- ContractInferenceHelper.cs
- ContextProperty.cs
- SortedDictionary.cs
- ObjectDataSourceEventArgs.cs
- XamlRtfConverter.cs
- M3DUtil.cs
- FunctionQuery.cs
- FileChangesMonitor.cs
- WebPartCloseVerb.cs
- UrlMappingsSection.cs
- SortDescriptionCollection.cs
- LinkLabel.cs
- newinstructionaction.cs
- NegotiateStream.cs
- HtmlInputImage.cs
- MachineKeySection.cs
- SqlDataReaderSmi.cs
- CapabilitiesPattern.cs
- HwndHost.cs
- DataColumnCollection.cs
- ToolStripSeparatorRenderEventArgs.cs
- PartialList.cs
- HtmlGenericControl.cs
- PerformanceCounterLib.cs
- StringKeyFrameCollection.cs
- Group.cs
- DoubleAnimationClockResource.cs
- KnownTypes.cs
- DiffuseMaterial.cs
- SqlBuilder.cs
- RandomNumberGenerator.cs
- QueryOperationResponseOfT.cs
- FileLogRecord.cs
- DynamicValidator.cs
- ProgressBarRenderer.cs
- LogEntryHeaderv1Deserializer.cs
- XmlSchemaComplexType.cs
- DispatcherOperation.cs
- GridPatternIdentifiers.cs
- CellCreator.cs