Collections Data Structure C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Lilium.Collections
{
  public static class DictionaryExtensions
  {
    /// 
    /// Merges two dictionaries.
    /// 

    /// 
    /// 
    /// 
    /// 
    /// 
    /// Values in original dictionary will be replaced with values from additional dictionary with same keys.
    /// 

    public static void Merge(this IDictionary original, IDictionary additional)
    {
      if (original == null) throw new ArgumentNullException("original");
      if (additional == null) throw new ArgumentNullException("additional");
      foreach (var pair in additional)
        original[pair.Key] = pair.Value;
    }
        public static IDictionary ToDictionaty(this object obj)
        {
            var result = new Dictionary();
            foreach (var prop in obj.GetType().GetProperties())
                result.Add(prop.Name, prop.GetValue(obj, null));
            return result;
        }
        public static IDictionary ToDictionaty(this object obj)
        {
            var result = new Dictionary();
            foreach (var prop in obj.GetType().GetProperties())
                result.Add(prop.Name, (TValue)prop.GetValue(obj, null));
            return result;
        }
        public static TValue TryGetValue(this IDictionary dictionary, TKey key)
        {
            if (dictionary == null) throw new ArgumentNullException("dictionary");
            TValue value;
            if (dictionary.TryGetValue(key, out value))
                return value;
            else
                return default(TValue);
        }
        public static TValue TryGetValue(this IDictionary dictionary, TKey key, TValue defaultValue)
        {
            if (dictionary == null) throw new ArgumentNullException("dictionary");
            TValue value;
            if (dictionary.TryGetValue(key, out value))
                return value;
            else
                return defaultValue;
        }
  }
}