当前位置: 首页 > news >正文

wordpress oa 插件淄博网站优化首选公司

wordpress oa 插件,淄博网站优化首选公司,更换网站后台,网站丢失了怎么办啊EventSystem 事件系统 事件系统在开发中必不可少事件系统使用观察者模式可以极大程度降低程序的耦合#xff0c;之前的文章也讲过事件系统但是不够高效简洁#xff0c;如何轻便高效优雅的实现一个事件呢#xff1f;依然基于之前的AssemblyManager 程序集管理器和SingletonS…EventSystem 事件系统 事件系统在开发中必不可少事件系统使用观察者模式可以极大程度降低程序的耦合之前的文章也讲过事件系统但是不够高效简洁如何轻便高效优雅的实现一个事件呢依然基于之前的AssemblyManager 程序集管理器和SingletonSystem 单例管理系统进行开发主要原理也是根据反射去获取事件的接口使用反射进行实例化处理类而非人工手动订阅事件。 1.IEvent public interface IEvent {Type GetEventType();void Invoke(object self); }2.EventHandler public abstract class EventHandlerT : IEvent where T : struct {private readonly Type _selfType typeof(T);public Type GetEventType(){return _selfType;}public abstract void Handler(T eventStruct);public void Invoke(object self){try{Handler((T)self);}catch (Exception ex){Debug.LogError(${_selfType.Name} Error : {ex.Message});return;}} }3.EventInfo public sealed class EventInfo {public readonly Type Type;public readonly IEvent Event;public EventInfo(Type type, IEvent event){Type type;Event event;} }4.EventSystem public class EventSystem : SingletonEventSystem {private readonly OneToManyListType, IEvent _events new();private readonly OneToManyListint, EventInfo _assemblyEvents new();protected override void Load(int assemblyName){foreach (Type type in AssemblyManager.ForEach(assemblyName, typeof(IEvent))){IEvent event (IEvent)Activator.CreateInstance(type);if (event ! null){Type thisType event.GetEventType();_events.Add(thisType, event);_assemblyEvents.Add(assemblyName, new EventInfo(thisType, event));}}}protected override void UnLoad(int assemblyName){if(_assemblyEvents.TryGetValue(assemblyName,out ListEventInfo events)){foreach (EventInfo info in events){_events.RemoveValue(info.Type, info.Event);}_assemblyEvents.RemoveByKey(assemblyName);}}public void PublishTEventData(TEventData eventData) where TEventData : struct{if (!_events.TryGetValue(eventData.GetType(), out ListIEvent list))return;foreach (IEvent event in list){try{event?.Invoke(eventData);}catch (Exception ex){Debug.LogError(ex.Message);return;}}}public override void Dispose(){_events.Clear();_assemblyEvents.Clear();base.Dispose();} }这里的每个事件传递的参数可以使用引用池进行管理避免重复创建相同的对象消耗性能。 5.测试 public class Test : MonoBehaviour {void Start(){SingletonSystem.Initialize();AssemblyManager.Initialize();}private void Update(){SingletonSystem.Update();if (Input.GetKeyDown(KeyCode.P)){EventSystem.Instance.PublishAgeEvent(new AgeEvent() { Age 18 });}} }public struct AgeEvent {public int Age; }public class AgeChangeHandler : EventHandlerAgeEvent {public override void Handler(AgeEvent eventStruct){Debug.Log(eventStruct.Age);} }
http://www.yutouwan.com/news/374523/

相关文章:

  • 兼职网站建设招聘信息单位网站建设要记入无形资产吗
  • 快速搭建网站 开源网站的外部推广
  • 精湛的企业网站建设怎么样创建一个网站
  • 设置网站建设天元建设集团有限公司欠款
  • 网站类网站开发朔州怀仁网站建设
  • 不关站备案wordpress 2019海外推广有前途吗
  • 桂林市防疫最新政策有必要对网站进行seo吗
  • 网站建设外包需要多少钱上海建设工程信息查询网
  • 国外的设计网站app吗广州网站建设oem
  • 网站建设需要资料自学软装设计该怎么入手
  • 网站在网络文化建设方面的成果wordpress 用户留言
  • 网站建设与管理内容seo实战培训课程
  • 厦门做商城网站长春站建筑风格
  • 教育网站制作企业纯html5 网站
  • 网站开发与设计静态网页源代码怎么攻击网站
  • 过年做那些网站能致富王野天图片
  • 招投标 网站建设 山西互动营销成功案例
  • 一个空间建多个网站网站建设友情链接怎样交换
  • 沈阳专业seoseo营销技巧
  • 视频网站如何赚钱中铁建设集团门户网登录失败
  • wcf网站开发如何做网站流量
  • 导航网站php电影网站html源码
  • 淮南企业网站建设公司内部网站建设管理办法
  • 网站后台首页广东网站备案审核时间
  • 无锡做网站的企业新手如何做外贸生意
  • 帝国cms 调用网站名称运营平台是什么意思
  • 关键词爱站网深圳信科做网站
  • 在大学做网站赚钱吗wordpress 默认密码
  • 减肥网站模板深圳几个区
  • 专业网站建设办公公司域名不变网站做变动