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;
}
}
}