using System.Collections.Generic; using JD.Collections.ObjectModel; namespace JD.Collections.Extensions { /// /// Extension methods for IDictionary /// public static class DictionaryExtensions { #region AsReadOnly /// /// Returns a read-only wrapper over the given dictionary. /// public static ReadOnlyDictionary AsReadOnly(this IDictionary dictionary) { return new ReadOnlyDictionary(dictionary); } #endregion #region IsEqualTo /// /// Returns true if the given dictionary is equal (same key/value pairs) to this dictionary. /// public static bool IsEqualTo(this IDictionary a, IDictionary collection) { return IsEqualTo(a, collection, EqualityComparer.Default); } /// /// Returns true if the given dictionary is equal (same key/value pairs) to this dictionary. /// public static bool IsEqualTo(this IDictionary a, IDictionary collection, IEqualityComparer valueComparer) { if (a.Count != collection.Count) { return false; } foreach (KeyValuePair pair in a) { TValue otherValue; if (!collection.TryGetValue(pair.Key, out otherValue)) { return false; } if (!valueComparer.Equals(pair.Value, otherValue)) { return false; } } return true; } #endregion #region ValueOrDefault /// /// Returns the value corresponding to the given key in the dictionary or the default value if the key is not in the dictionary. /// public static TValue ValueOrDefault(this IDictionary dictionary, TKey key) { TValue result; dictionary.TryGetValue(key, out result); return result; } #endregion } }