using System; using System.Collections.Generic; namespace Masuit.Tools { public static class IDictionaryExtensions { /// /// 添加或更新键值对 /// /// /// /// /// 键 /// 值 /// public static TValue AddOrUpdate( this IDictionary @this, TKey key, TValue value) { if (!@this.ContainsKey(key)) { @this.Add(new KeyValuePair(key, value)); } else { @this[key] = value; } return @this[key]; } /// /// 添加或更新键值对 /// /// /// /// /// 键 /// 添加时的值 /// 更新时的操作 /// public static TValue AddOrUpdate( this IDictionary @this, TKey key, TValue addValue, Func updateValueFactory) { if (!@this.ContainsKey(key)) { @this.Add(new KeyValuePair(key, addValue)); } else { @this[key] = updateValueFactory(key, @this[key]); } return @this[key]; } /// /// 添加或更新键值对 /// /// /// /// /// 键 /// 添加时的操作 /// 更新时的操作 /// public static TValue AddOrUpdate( this IDictionary @this, TKey key, Func addValueFactory, Func updateValueFactory) { if (!@this.ContainsKey(key)) { @this.Add(new KeyValuePair(key, addValueFactory(key))); } else { @this[key] = updateValueFactory(key, @this[key]); } return @this[key]; } } }