using System; using System.Collections.Generic; using System.Linq; namespace Sanhe.Abp.Notifications { public class NotificationDataMappingDictionary : Dictionary> { public static string DefaultKey { get; set; } = "Default"; /// /// 处理某个通知的数据 /// 特定于一个提供程序 /// /// /// /// public void Mapping(string provider, string name, Func func) { if (!ContainsKey(provider)) { this[provider] = new List(); } var mapItem = this[provider].FirstOrDefault(item => item.Name.Equals(name)); if (mapItem == null) { this[provider].Add(new NotificationDataMappingDictionaryItem(name, func)); } else { mapItem.Replace(func); } } /// /// 处理所有通知的数据 /// 特定于一个提供程序 /// /// /// public void MappingDefault(string provider, Func func) { Mapping(provider, DefaultKey, func); } /// /// 获取需要处理数据的方法 /// /// /// /// public NotificationDataMappingDictionaryItem GetMapItemOrDefault(string provider, string name) { if (ContainsKey(provider)) { return this[provider].GetOrNullDefault(name); } return null; } } }