ConfigurationSchemaErrors
using System.Collections.Generic;
namespace System.Configuration
{
internal class ConfigurationSchemaErrors
{
private List<ConfigurationException> _errorsAll;
private List<ConfigurationException> _errorsGlobal;
private List<ConfigurationException> _errorsLocal;
internal bool HasLocalErrors => ErrorsHelper.GetHasErrors(_errorsLocal);
internal bool HasGlobalErrors => ErrorsHelper.GetHasErrors(_errorsGlobal);
private bool HasAllErrors => ErrorsHelper.GetHasErrors(_errorsAll);
internal int GlobalErrorCount => ErrorsHelper.GetErrorCount(_errorsGlobal);
internal void AddError(ConfigurationException ce, ExceptionAction action)
{
switch (action) {
case ExceptionAction.Global:
ErrorsHelper.AddError(ref _errorsAll, ce);
ErrorsHelper.AddError(ref _errorsGlobal, ce);
break;
case ExceptionAction.NonSpecific:
ErrorsHelper.AddError(ref _errorsAll, ce);
break;
case ExceptionAction.Local:
ErrorsHelper.AddError(ref _errorsLocal, ce);
break;
}
}
internal void SetSingleGlobalError(ConfigurationException ce)
{
_errorsAll = null;
_errorsLocal = null;
_errorsGlobal = null;
AddError(ce, ExceptionAction.Global);
}
internal bool HasErrors(bool ignoreLocal)
{
if (!ignoreLocal)
return HasAllErrors;
return HasGlobalErrors;
}
internal void ThrowIfErrors(bool ignoreLocal)
{
if (!HasErrors(ignoreLocal))
return;
if (HasGlobalErrors)
throw new ConfigurationErrorsException(_errorsGlobal);
throw new ConfigurationErrorsException(_errorsAll);
}
internal List<ConfigurationException> RetrieveAndResetLocalErrors(bool keepLocalErrors)
{
List<ConfigurationException> errorsLocal = _errorsLocal;
_errorsLocal = null;
if (keepLocalErrors)
ErrorsHelper.AddErrors(ref _errorsAll, errorsLocal);
return errorsLocal;
}
internal void AddSavedLocalErrors(ICollection<ConfigurationException> coll)
{
ErrorsHelper.AddErrors(ref _errorsAll, coll);
}
internal void ResetLocalErrors()
{
RetrieveAndResetLocalErrors(false);
}
}
}