Collections Data Structure C#

#region License and Copyright
/* -------------------------------------------------------------------------
 * Dotnet Commons Collections
 *
 *
 * This library is free software; you can redistribute it and/or modify it 
 * under the terms of the GNU Lesser General Public License as published by 
 * the Free Software Foundation; either version 2.1 of the License, or 
 * (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful, but 
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License 
 * for more details. 
 *
 * You should have received a copy of the GNU Lesser General Public License 
 * along with this library; if not, write to the 
 * 
 * Free Software Foundation, Inc., 
 * 59 Temple Place, 
 * Suite 330, 
 * Boston, 
 * MA 02111-1307 
 * USA 
 * 
 * -------------------------------------------------------------------------
 */
#endregion
using System;
using System.Collections;
using System.Text;
namespace Dotnet.Commons.Collections
{
  ///  
  ///   
  /// 
  /// This utility class extends the operations for manipulating 
  /// Dictionary collections.
  ///
  ///
  /// 
  
  /// 
  public class DictionaryUtils
  {
    private DictionaryUtils()
    {      
    }
    /// --------------------------------------------------------------------------
    /// 
    /// Copy all the element from a dictionary to another. The destination dictionary
    /// will be first cleared before the the copy is performed. 
    /// 
    /// If the source dictionary is empty. The Copy process will not occur. The Destination
    /// dictionary will retain its contents.
    /// 
    /// 

    /// Dictionary to copy from
    /// Dictionary to copy to
    /// --------------------------------------------------------------------------
    public static void Copy(IDictionary srcDict, ref IDictionary destDict)
    {
      if (srcDict == null)
        throw new System.ArgumentNullException("Source Dictionary cannot be null.");
      if (destDict == null)
        throw new System.ArgumentNullException("Destination Dictionary cannot be null.");
      if (srcDict.Count == 0)
        return;
      destDict.Clear();
      foreach(object key in srcDict.Keys)
      {
        destDict.Add(key, srcDict[key]);
      }
    }
    /// --------------------------------------------------------------------------
    /// 
    /// Shallow cloning of a dictionary.
    /// 

    /// Dictionary to clone
    /// Cloned dictionary
    /// --------------------------------------------------------------------------
    public static IDictionary Clone(IDictionary srcDict)
    {
      Type srcDicType = srcDict.GetType();
        
      IDictionary cloned = (IDictionary) Activator.CreateInstance(srcDicType);
      Copy(srcDict, ref cloned);
      return cloned;
    }
   }
}