The Labs \ Source Viewer \ SSCLI \ System.Configuration.Provider \ ProviderCollection

  1. //------------------------------------------------------------------------------
  2. // <copyright file="ProviderCollection.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.Provider
  16. {
  17.     using System.Collections;
  18.     using System.Collections.Specialized;
  19.     using System.Runtime.Serialization;
  20.    
  21.     /// <devdoc>
  22.     /// <para>[To be supplied.]</para>
  23.     /// </devdoc>
  24.    
  25.     public class ProviderCollection : IEnumerable, ICollection
  26.     {
  27.         //, ICloneable
  28.         private Hashtable _Hashtable = null;
  29.         private bool _ReadOnly = false;
  30.        
  31.         ////////////////////////////////////////////////////////////
  32.         ////////////////////////////////////////////////////////////
  33.         public ProviderCollection()
  34.         {
  35.             _Hashtable = new Hashtable(10, StringComparer.OrdinalIgnoreCase);
  36.         }
  37.        
  38.         ////////////////////////////////////////////////////////////
  39.         ////////////////////////////////////////////////////////////
  40.         public virtual void Add(ProviderBase provider)
  41.         {
  42.             if (_ReadOnly)
  43.                 throw new NotSupportedException(SR.GetString(SR.CollectionReadOnly));
  44.            
  45.             if (provider == null)
  46.                 throw new ArgumentNullException("provider");
  47.            
  48.             if (provider.Name == null || provider.Name.Length < 1)
  49.                 throw new ArgumentException(SR.GetString(SR.Config_provider_name_null_or_empty));
  50.            
  51.             _Hashtable.Add(provider.Name, provider);
  52.         }
  53.        
  54.         ////////////////////////////////////////////////////////////
  55.         ////////////////////////////////////////////////////////////
  56.         public void Remove(string name)
  57.         {
  58.             if (_ReadOnly)
  59.                 throw new NotSupportedException(SR.GetString(SR.CollectionReadOnly));
  60.             _Hashtable.Remove(name);
  61.         }
  62.        
  63.         ////////////////////////////////////////////////////////////
  64.         ////////////////////////////////////////////////////////////
  65.         public ProviderBase this[string name]
  66.         {
  67.             get { return _Hashtable[name] as ProviderBase; }
  68.         }
  69.        
  70.         ////////////////////////////////////////////////////////////
  71.         ////////////////////////////////////////////////////////////
  72.         public IEnumerator GetEnumerator()
  73.         {
  74.             return _Hashtable.Values.GetEnumerator();
  75.         }
  76.         //public object Clone(){
  77.         // return new ProviderCollection(_Indices, _Values);
  78.         //}
  79.        
  80.         ////////////////////////////////////////////////////////////
  81.         ////////////////////////////////////////////////////////////
  82.         public void SetReadOnly()
  83.         {
  84.             if (_ReadOnly)
  85.                 return;
  86.             _ReadOnly = true;
  87.         }
  88.        
  89.         ////////////////////////////////////////////////////////////
  90.         ////////////////////////////////////////////////////////////
  91.         public void Clear()
  92.         {
  93.             if (_ReadOnly)
  94.                 throw new NotSupportedException(SR.GetString(SR.CollectionReadOnly));
  95.             _Hashtable.Clear();
  96.         }
  97.        
  98.         ////////////////////////////////////////////////////////////
  99.         ////////////////////////////////////////////////////////////
  100.         // ICollection interface
  101.         public int Count {
  102.             get { return _Hashtable.Count; }
  103.         }
  104.         public bool IsSynchronized {
  105.             get { return false; }
  106.         }
  107.         public object SyncRoot {
  108.             get { return this; }
  109.         }
  110.        
  111.         public void CopyTo(ProviderBase[] array, int index)
  112.         {
  113.             ((ICollection)this).CopyTo(array, index);
  114.         }
  115.        
  116.         void ICollection.CopyTo(Array array, int index)
  117.         {
  118.             _Hashtable.Values.CopyTo(array, index);
  119.         }
  120.        
  121.     }
  122. }

Developer Fusion