我在C#中有一個事件。有五個訂戶。所有訂戶都是不同的類別。但是,當提高事件我希望不是所有的用戶/處理程序都應該被通知來處理這個事件。我應該有一些過濾機制,然後只通知剩餘的用戶。什麼可能是實現這一目標的最佳方式?C#事件調用列表過濾
5
A
回答
2
如果你想用你現有的方式來完成,那麼只需遍歷事件的調用列表即可。現在
var list = localHandler.GetInvocationList();
foreach (EventHandler<T> item in list)
{
if(((ICanDoThing)item.Target).CanDoThing)
{
item(this, someArgs);
}
}
,你可以看到我已經投item.Target一種類型ICanDoThing的,這是我剛剛做了一個公開的方法「CanDoThing」的接口。這允許您查詢對象是否支持您的特定需求。
您應該問您是否應該爲此使用事件,但上面的內容可以讓您這樣做。
1
我想你在這裏需要多個活動,以便訂閱者可以訂閱他們真正想要的活動。
訂閱活動意味着您對活動感興趣。如果你對 不感興趣,你不應該訂閱它。
1
您可以使用觀察者模式,如下所述:http://www.dofactory.com/Patterns/PatternObserver.aspx並在觀察者的更新方法中實現您的邏輯。
相關問題
- 1. 對由Qt5.0事件鼠標點擊事件過濾器多次調用過濾
- 2. C#使用Linq過濾列表需要調用ToList方法嗎?
- 3. 使用列表內容過濾datagridview C#
- 4. 如何使用C#過濾列表LINQ
- 5. 如何使用LINQ C過濾列表#
- 6. 過濾文件列表
- 7. 過濾FullCalendar事件
- 8. 過濾事件 - SQL
- 9. 列表過濾
- 10. 列表過濾
- 11. 過濾列表
- 12. 過濾列表
- 13. 通過ByIncludingOnly過濾事件
- 14. 從外部事件過濾Sigma.Js圖表
- 15. 從圖表api過濾事件facebook
- 16. 從C++調用C#事件
- 17. 用angularJS過濾PHP列表
- 18. 用JCheckBox列過濾表格
- 19. 用URL過濾JQuery列表
- 20. 用linq過濾列表
- 21. 過濾列表C#ms訪問
- 22. c#對象列表過濾(linq?)
- 23. C#擴展方法過濾列表
- 24. c#過濾列表框與文本框
- 25. c#wpf過濾器列表在聲明
- 26. 通過代表和事件調用的區別C#
- 27. JQuery列表,json數組,過濾器單擊事件
- 28. 如何過濾jquery中的keydown事件列表?
- 29. Django表 - 列過濾
- 30. 過濾器列表
你介意闡述過濾器應該如何工作嗎?它是依賴於事先設置的「消息類型」,還是第一個用戶所做的事情,它使得事件應該被觸發給其他聽衆(有點像「我已經照顧好了這一點,其他人不'不得不做任何事情「)? – Patrick
是的,它取決於消息的類型。將會有一個ID說,我只需要援引那些與TAR有關的訂閱者 –
這個ID的列表是否預先確定?換句話說,你可以爲每個id添加一個事件,還是它是動態的,因爲列表在應用程序的生命週期中可以更改? – Patrick