2013-11-15 60 views
0

假設我有一個類A,它從不同的類訂閱了n個不同的事件(說B類的事件1和C類的事件2)。在處理A類對象時,我想從它附加到不同類的所有事件中取消訂閱。我想以編程方式進行編輯,即我可以訪問類A的對象,並且想知道從不同的類註冊了哪些事件,然後取消訂閱它們。可能嗎?訪問用戶事件

回答

2

不,它不是。技術上你的class A完全沒有提及class Bclass C。參考是另一種方式。

您必須跟蹤A中的字段中的事件,並在處置時手動取消訂閱。

+0

感謝但實際上A類在運行時有條件地訂閱事件,所以跟蹤它註冊的事件有點難。你推薦任何優秀的設計模式或技術來存儲註冊的事件。 – Kumar

+0

您必須跟蹤您訂閱事件的所有對象,併爲每個對象記錄哪些事件。您可能需要某種包含每個事件的對象引用和標誌的列表。這很混亂,但[沒有好的方法來引用一個事件](http://stackoverflow.com/questions/4755988/how-to-reference-an-event-in-c-sharp)。 –