<PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />

ErrorInfoXmlDocument

using System.Configuration.Internal; using System.Xml; namespace System.Configuration { internal sealed class ErrorInfoXmlDocument : XmlDocument, IConfigErrorInfo { private string _filename; private int _lineOffset; private XmlTextReader _reader; internal int LineNumber => ((IConfigErrorInfo)this).LineNumber; int IConfigErrorInfo.LineNumber { get { if (_reader == null) return 0; if (_lineOffset > 0) return _reader.LineNumber + _lineOffset - 1; return _reader.LineNumber; } } string IConfigErrorInfo.Filename { get { return _filename; } } public override void Load(string filename) { _filename = filename; try { _reader = new XmlTextReader(filename) { XmlResolver = null }; Load(_reader); } finally { if (_reader != null) { _reader.Close(); _reader = null; } } } private void LoadFromConfigXmlReader(ConfigXmlReader reader) { _filename = ((IConfigErrorInfo)reader).Filename; _lineOffset = ((IConfigErrorInfo)reader).LineNumber + 1; try { _reader = reader; Load(_reader); } finally { if (_reader != null) { _reader.Close(); _reader = null; } } } internal static XmlNode CreateSectionXmlNode(ConfigXmlReader reader) { ErrorInfoXmlDocument errorInfoXmlDocument = new ErrorInfoXmlDocument(); errorInfoXmlDocument.LoadFromConfigXmlReader(reader); return errorInfoXmlDocument.DocumentElement; } public override XmlAttribute CreateAttribute(string prefix, string localName, string namespaceUri) { return new ConfigXmlAttribute(_filename, LineNumber, prefix, localName, namespaceUri, this); } public override XmlElement CreateElement(string prefix, string localName, string namespaceUri) { return new ConfigXmlElement(_filename, LineNumber, prefix, localName, namespaceUri, this); } public override XmlText CreateTextNode(string text) { return new ConfigXmlText(_filename, LineNumber, text, this); } public override XmlCDataSection CreateCDataSection(string data) { return new ConfigXmlCDataSection(_filename, LineNumber, data, this); } public override XmlComment CreateComment(string data) { return new ConfigXmlComment(_filename, LineNumber, data, this); } public override XmlSignificantWhitespace CreateSignificantWhitespace(string data) { return new ConfigXmlSignificantWhitespace(_filename, LineNumber, data, this); } public override XmlWhitespace CreateWhitespace(string data) { return new ConfigXmlWhitespace(_filename, LineNumber, data, this); } } }