using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ZXKFramework { public static class MVC { //资源 public static Dictionary Models = new Dictionary(); //名字 -- model public static Dictionary Views = new Dictionary(); // 名字 -- view public static Dictionary CommandMap = new Dictionary(); //事件名字 -- 类型 //注册view public static void RegisterView(View view) { //防止view重复注册 if (Views.ContainsKey(view.Name)) { Views.Remove(view.Name); } view.RegisterAttentionEvent(); Views[view.Name] = view; } //注册model public static void RegisterModel(Model model) { Models[model.Name] = model; } //注册controller public static void RegisterController(string eventName, Type controllerType) { CommandMap[eventName] = controllerType; } //获取model public static T GetModel() where T : Model { foreach (var m in Models.Values) { if (m is T) { return (T)m; } } return null; } //获取view public static T GetView() where T : View { foreach (var v in Views.Values) { if (v is T) { return (T)v; } } return null; } //发送事件 public static void SendEvent(string eventName, object data = null) { //controller执行 if (CommandMap.ContainsKey(eventName)) { Type t = CommandMap[eventName]; //控制器生成 Controller c = Activator.CreateInstance(t) as Controller; c.Execute(data); } //view处理 foreach (var v in Views.Values) { if (v.AttentionList.Contains(eventName)) { //执行 v.HandleEvent(eventName, data); } } } } }