ConfigXmlReader
using System.Configuration.Internal;
using System.IO;
using System.Xml;
namespace System.Configuration
{
internal sealed class ConfigXmlReader : XmlTextReader, IConfigErrorInfo
{
private readonly string _filename;
private readonly bool _lineNumberIsConstant;
private readonly int _lineOffset;
internal string RawXml { get; }
int IConfigErrorInfo.LineNumber {
get {
if (_lineNumberIsConstant)
return _lineOffset;
if (_lineOffset > 0)
return base.LineNumber + (_lineOffset - 1);
return base.LineNumber;
}
}
string IConfigErrorInfo.Filename {
get {
return _filename;
}
}
internal ConfigXmlReader(string rawXml, string filename, int lineOffset)
: this(rawXml, filename, lineOffset, false)
{
}
internal ConfigXmlReader(string rawXml, string filename, int lineOffset, bool lineNumberIsConstant)
: base(new StringReader(rawXml))
{
RawXml = rawXml;
_filename = filename;
_lineOffset = lineOffset;
_lineNumberIsConstant = lineNumberIsConstant;
}
internal ConfigXmlReader Clone()
{
return new ConfigXmlReader(RawXml, _filename, _lineOffset, _lineNumberIsConstant);
}
}
}