The Labs \ Source Viewer \ SSCLI \ System.Configuration \ ErrorsHelper

  1. //------------------------------------------------------------------------------
  2. // <copyright file="FactoryRecord.cs" company="Microsoft">
  3. //
  4. // Copyright (c) 2006 Microsoft Corporation. All rights reserved.
  5. //
  6. // The use and distribution terms for this software are contained in the file
  7. // named license.txt, which can be found in the root of this distribution.
  8. // By using this software in any fashion, you are agreeing to be bound by the
  9. // terms of this license.
  10. //
  11. // You must not remove this notice, or any other, from this software.
  12. //
  13. // </copyright>
  14. //------------------------------------------------------------------------------
  15. namespace System.Configuration
  16. {
  17.     using System.Collections;
  18.     using System.Collections.Specialized;
  19.     using System.Collections.Generic;
  20.    
  21.     static internal class ErrorsHelper
  22.     {
  23.        
  24.         static internal int GetErrorCount(List<ConfigurationException> errors)
  25.         {
  26.             return (errors != null) ? errors.Count : 0;
  27.         }
  28.        
  29.         static internal bool GetHasErrors(List<ConfigurationException> errors)
  30.         {
  31.             return GetErrorCount(errors) > 0;
  32.         }
  33.        
  34.         static internal void AddError(ref List<ConfigurationException> errors, ConfigurationException e)
  35.         {
  36.             Debug.Assert(e != null, "e != null");
  37.            
  38.             // Create on demand
  39.             if (errors == null) {
  40.                 errors = new List<ConfigurationException>();
  41.             }
  42.            
  43.             ConfigurationErrorsException ce = e as ConfigurationErrorsException;
  44.             if (ce == null) {
  45.                 errors.Add(e);
  46.             }
  47.             else {
  48.                 ICollection<ConfigurationException> col = ce.ErrorsGeneric;
  49.                 if (col.Count == 1) {
  50.                     errors.Add(e);
  51.                 }
  52.                 else {
  53.                     errors.AddRange(col);
  54.                 }
  55.             }
  56.         }
  57.        
  58.         static internal void AddErrors(ref List<ConfigurationException> errors, ICollection<ConfigurationException> coll)
  59.         {
  60.             if (coll == null || coll.Count == 0) {
  61.                 // Nothing to do here, bail
  62.                 return;
  63.             }
  64.            
  65.             foreach (ConfigurationException e in coll) {
  66.                 AddError(ref errors, e);
  67.             }
  68.         }
  69.        
  70.         static internal ConfigurationErrorsException GetErrorsException(List<ConfigurationException> errors)
  71.         {
  72.             if (errors == null) {
  73.                 return null;
  74.             }
  75.            
  76.             Debug.Assert(errors.Count != 0, "errors.Count != 0");
  77.             return new ConfigurationErrorsException(errors);
  78.         }
  79.        
  80.         static internal void ThrowOnErrors(List<ConfigurationException> errors)
  81.         {
  82.             ConfigurationErrorsException e = GetErrorsException(errors);
  83.             if (e != null) {
  84.                 throw e;
  85.             }
  86.         }
  87.     }
  88. }

Developer Fusion