關於對 Unity 3D Strange IoC 框架事件分發器的認識

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


關於事件分發器的認識


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(事件名, 事件處理方法)

------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------
發佈了20 篇原創文章 · 獲贊 23 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章