using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace SuperSocket.Common { /// <summary> /// Extension class for IDictionary /// </summary> public static class DictionaryExtension { /// <summary> /// Gets the value by key. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="dictionary">The dictionary.</param> /// <param name="key">The key.</param> /// <returns></returns> public static T GetValue<T>(this IDictionary<object, object> dictionary, object key) where T : new() { T defaultValue = default(T); return GetValue<T>(dictionary, key, defaultValue); } /// <summary> /// Gets the value by key and default value. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="dictionary">The dictionary.</param> /// <param name="key">The key.</param> /// <param name="defaultValue">The default value.</param> /// <returns></returns> public static T GetValue<T>(this IDictionary<object, object> dictionary, object key, T defaultValue) { object valueObj; if (!dictionary.TryGetValue(key, out valueObj)) { return defaultValue; } else { return (T)valueObj; } } } }