| File: System\Configuration\ConfigXmlReader.cs | Web Access |
| Project: src\runtime\src\libraries\System.Configuration.ConfigurationManager\src\System.Configuration.ConfigurationManager.csproj (System.Configuration.ConfigurationManager) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Configuration.Internal; using System.Diagnostics; using System.IO; using System.Xml; namespace System.Configuration { internal sealed class ConfigXmlReader : XmlTextReader, IConfigErrorInfo { private readonly string _filename; // Used in a decrypted configuration section to locate // the line where the ecnrypted section begins. private readonly bool _lineNumberIsConstant; private readonly int _lineOffset; 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; Debug.Assert(!_lineNumberIsConstant || (_lineOffset > 0), "!_lineNumberIsConstant || _lineOffset > 0"); } internal string RawXml { get; } int IConfigErrorInfo.LineNumber { get { if (_lineNumberIsConstant) return _lineOffset; if (_lineOffset > 0) return LineNumber + (_lineOffset - 1); return LineNumber; } } string IConfigErrorInfo.Filename => _filename; internal ConfigXmlReader Clone() { return new ConfigXmlReader(RawXml, _filename, _lineOffset, _lineNumberIsConstant); } } }