//------------------------------------------------------------------------------ // <copyright file="IXmlLineInfo.cs" company="Microsoft"> // Copyright (c) Microsoft Corporation. All rights reserved. // </copyright> // <owner current="true" primary="true">Microsoft</owner> //------------------------------------------------------------------------------ namespace System.Xml { /// <include file='doc\IXmlLineInfo.uex' path='docs/doc[@for="IXmlLineInfo"]/*' /> public interface IXmlLineInfo { /// <include file='doc\IXmlLineInfo.uex' path='docs/doc[@for="IXmlLineInfo.HasLineInfo"]/*' /> bool HasLineInfo(); /// <include file='doc\IXmlLineInfo.uex' path='docs/doc[@for="IXmlLineInfo.LineNumber"]/*' /> int LineNumber { get; } /// <include file='doc\IXmlLineInfo.uex' path='docs/doc[@for="IXmlLineInfo.LinePosition"]/*' /> int LinePosition { get; } } #if !SILVERLIGHT internal class PositionInfo : IXmlLineInfo { public virtual bool HasLineInfo() { return false; } public virtual int LineNumber { get { return 0;} } public virtual int LinePosition { get { return 0;} } public static PositionInfo GetPositionInfo(Object o) { IXmlLineInfo li = o as IXmlLineInfo; if (li != null) { return new ReaderPositionInfo(li); } else { return new PositionInfo(); } } } internal class ReaderPositionInfo: PositionInfo { private IXmlLineInfo lineInfo; public ReaderPositionInfo(IXmlLineInfo lineInfo) { this.lineInfo = lineInfo; } public override bool HasLineInfo() { return lineInfo.HasLineInfo(); } public override int LineNumber { get { return lineInfo.LineNumber; } } public override int LinePosition { get { return lineInfo.LinePosition; } } } #endif }// namespace