using DaSaSo.ViewModel.Enums; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DaSaSo.ViewModel { class Mediator { private static IDictionary>> pl_dict = new Dictionary>>(); public static void Subscribe(EMediator token, Action callback) { if (!pl_dict.ContainsKey(token)) { var list = new List>(); list.Add(callback); pl_dict.Add(token, list); } else { bool found = false; foreach (var item in pl_dict[token]) { if (item.Method.ToString() == callback.Method.ToString()) found = true; } if (!found) pl_dict[token].Add(callback); } } public static void Unsubscribe(EMediator token, Action callback) { if (pl_dict.ContainsKey(token)) pl_dict[token].Remove(callback); } public static void Notify(EMediator token, object? args = null) { if (pl_dict.ContainsKey(token)) { foreach (var callback in pl_dict[token]) callback(args); } } } }