Merges two dictionaries.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Lilium.Collections
{
public static class DictionaryExtensions
{
/// <summary>
/// Merges two dictionaries.
/// </summary>
/// <typeparam name="TKey"></typeparam>
/// <typeparam name="TValue"></typeparam>
/// <param name="original"></param>
/// <param name="additional"></param>
/// <remarks>
/// Values in original dictionary will be replaced with values from additional dictionary with same keys.
/// </remarks>
public static void Merge<TKey, TValue>(this IDictionary<TKey, TValue> original, IDictionary<TKey, TValue> 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<string, object> ToDictionaty(this object obj)
{
var result = new Dictionary<string, object>();
foreach (var prop in obj.GetType().GetProperties())
result.Add(prop.Name, prop.GetValue(obj, null));
return result;
}
public static IDictionary<string, TValue> ToDictionaty<TValue>(this object obj)
{
var result = new Dictionary<string, TValue>();
foreach (var prop in obj.GetType().GetProperties())
result.Add(prop.Name, (TValue)prop.GetValue(obj, null));
return result;
}
public static TValue TryGetValue<TKey, TValue>(this IDictionary<TKey, TValue> 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<TKey, TValue>(this IDictionary<TKey, TValue> 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;
}
}
}
Related examples in the same category