ConfigurationErrorsException
using System.Collections;
using System.Collections.Generic;
using System.Configuration.Internal;
using System.Globalization;
using System.Runtime.Serialization;
using System.Xml;
namespace System.Configuration
{
public class ConfigurationErrorsException : ConfigurationException
{
private const string HttpPrefix = "http:";
private const string SerializationParamFilename = "firstFilename";
private const string SerializationParamLine = "firstLine";
private const string SerializationParamErrorCount = "count";
private const string SerializationParamErrorData = "_errors";
private const string SerializationParamErrorType = "_errors_type";
private readonly ConfigurationException[] _errors;
private string _firstFilename;
private int _firstLine;
public override string Message {
get {
string filename = Filename;
int line;
if (!string.IsNullOrEmpty(filename)) {
if (Line == 0)
return BareMessage + " (" + filename + ")";
string[] obj = new string[6] {
BareMessage,
" (",
filename,
" line ",
null,
null
};
line = Line;
obj[4] = line.ToString(CultureInfo.CurrentCulture);
obj[5] = ")";
return string.Concat(obj);
}
if (Line == 0)
return BareMessage;
string bareMessage = BareMessage;
line = Line;
return bareMessage + " (line " + line.ToString("G", CultureInfo.CurrentCulture) + ")";
}
}
public override string Filename => _firstFilename;
public override int Line => _firstLine;
public ICollection Errors {
get {
if (_errors != null)
return _errors;
ConfigurationErrorsException ex = new ConfigurationErrorsException(BareMessage, base.InnerException, _firstFilename, _firstLine);
return new ConfigurationException[1] {
ex
};
}
}
internal ICollection<ConfigurationException> ErrorsGeneric => (ICollection<ConfigurationException>)Errors;
public ConfigurationErrorsException(string message, Exception inner, string filename, int line)
: base(message, inner)
{
Init(filename, line);
}
public ConfigurationErrorsException()
: this(null, null, null, 0)
{
}
public ConfigurationErrorsException(string message)
: this(message, null, null, 0)
{
}
public ConfigurationErrorsException(string message, Exception inner)
: this(message, inner, null, 0)
{
}
public ConfigurationErrorsException(string message, string filename, int line)
: this(message, null, filename, line)
{
}
public ConfigurationErrorsException(string message, XmlNode node)
: this(message, null, GetFilename(node), GetLineNumber(node))
{
}
public ConfigurationErrorsException(string message, Exception inner, XmlNode node)
: this(message, inner, GetFilename(node), GetLineNumber(node))
{
}
public ConfigurationErrorsException(string message, XmlReader reader)
: this(message, null, GetFilename(reader), GetLineNumber(reader))
{
}
public ConfigurationErrorsException(string message, Exception inner, XmlReader reader)
: this(message, inner, GetFilename(reader), GetLineNumber(reader))
{
}
internal ConfigurationErrorsException(string message, IConfigErrorInfo errorInfo)
: this(message, null, GetConfigErrorInfoFilename(errorInfo), GetConfigErrorInfoLineNumber(errorInfo))
{
}
internal ConfigurationErrorsException(string message, Exception inner, IConfigErrorInfo errorInfo)
: this(message, inner, GetConfigErrorInfoFilename(errorInfo), GetConfigErrorInfoLineNumber(errorInfo))
{
}
internal ConfigurationErrorsException(ConfigurationException e)
: this(e?.BareMessage, e?.InnerException, e?.Filename, e?.Line ?? 0)
{
}
internal ConfigurationErrorsException(ICollection<ConfigurationException> coll)
: this(GetFirstException(coll))
{
if (coll.Count > 1) {
_errors = new ConfigurationException[coll.Count];
coll.CopyTo(_errors, 0);
}
}
internal ConfigurationErrorsException(ArrayList coll)
: this((ConfigurationException)((coll.Count > 0) ? coll[0] : null))
{
if (coll.Count > 1) {
_errors = new ConfigurationException[coll.Count];
coll.CopyTo(_errors, 0);
}
}
protected ConfigurationErrorsException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
throw new PlatformNotSupportedException();
}
private void Init(string filename, int line)
{
base.HResult = -2146232062;
if (line == -1)
line = 0;
_firstFilename = filename;
_firstLine = line;
}
private static ConfigurationException GetFirstException(ICollection<ConfigurationException> coll)
{
using (IEnumerator<ConfigurationException> enumerator = coll.GetEnumerator()) {
if (enumerator.MoveNext())
return enumerator.Current;
}
return null;
}
public override void GetObjectData(SerializationInfo info, StreamingContext context)
{
base.GetObjectData(info, context);
}
public static int GetLineNumber(XmlNode node)
{
return GetConfigErrorInfoLineNumber(node as IConfigErrorInfo);
}
public static string GetFilename(XmlNode node)
{
return GetConfigErrorInfoFilename(node as IConfigErrorInfo);
}
public static int GetLineNumber(XmlReader reader)
{
return GetConfigErrorInfoLineNumber(reader as IConfigErrorInfo);
}
public static string GetFilename(XmlReader reader)
{
return GetConfigErrorInfoFilename(reader as IConfigErrorInfo);
}
private static int GetConfigErrorInfoLineNumber(IConfigErrorInfo errorInfo)
{
return errorInfo?.LineNumber ?? 0;
}
private static string GetConfigErrorInfoFilename(IConfigErrorInfo errorInfo)
{
return errorInfo?.Filename;
}
}
}