您的位置:首页 > 移动开发 > Unity3D

关于对 Unity 3D Strange IoC 框架事件分发器的认识

2017-02-06 14:51 751 查看
------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------

关于事件分发器的认识

public IEventDispatcher dispatcher { get; set; }

------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------

情况一:

派发者(标签):

[Inject(ContextKeys.CROSS_CONTEXT_DISPATCHER)]

监听者(标签):

[Inject(ContextKeys.CROSS_CONTEXT_DISPATCHER)]

触发相应的事件

crossContextBridge.Bind(事件):多次触发相应的事件(测试为触发4次)

[Inject(ContextKeys.CONTEXT_DISPATCHER)] 

触发相应的事件

crossContextBridge.Bind(事件):多次触发相应的事件(测试为触发4次)

[Inject]

不触发相应的事件

crossContextBridge.Bind(事件):不触发相应的事件

结论:

通过 [Inject(ContextKeys.CROSS_CONTEXT_DISPATCHER)] 派发器派发的事件不需要 crossContextBridge.Bind(事件) 绑定,否者触发相应事件多次。

------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------

情况二:

派发者(标签):

[Inject(ContextKeys.CONTEXT_DISPATCHER)]

监听者(标签):

[Inject(ContextKeys.CROSS_CONTEXT_DISPATCHER)]

不触发相应的事件

crossContextBridge.Bind(事件):触发相应的事件

[Inject(ContextKeys.CONTEXT_DISPATCHER)] 

不触发相应的事件

crossContextBridge.Bind(事件):触发相应的事件

[Inject]

不触发相应的事件

crossContextBridge.Bind(事件):不触发相应的事件

结论:

通过 [Inject(ContextKeys.CONTEXT_DISPATCHER)] 派发器派发的事件需要 crossContextBridge.Bind(事件) 绑定后才可以被 

带 [Inject(ContextKeys.CROSS_CONTEXT_DISPATCHER)] 或 [Inject(ContextKeys.CONTEXT_DISPATCHER)] 的监听者监听到。

------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------

情况三:

派发者(标签):

[Inject]

监听者(标签):

[Inject(ContextKeys.CROSS_CONTEXT_DISPATCHER)]

不触发相应的事件

crossContextBridge.Bind(事件):不触发相应的事件

[Inject(ContextKeys.CONTEXT_DISPATCHER)] 

不触发相应的事件

crossContextBridge.Bind(事件):不触发相应的事件

[Inject]

不触发相应的事件

crossContextBridge.Bind(事件):不触发相应的事件

结论:

[Inject] 标签的分发器只能自己发射,自己监听,一般 View 发射事件,Mediator 注入 View,监听方法写到 Mediator 里。

例如:view.dispatcher.AddListener(事件名, 事件处理方法)

------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐