簡體   English   中英

如何清除C#中某個特定事件處理程序的訂閱?

[英]How can I clear subscriptions from one particular event handler in C#?

我一直在研究事件系統在C#中,所以我明白你為什么不能直接訪問事件的用戶。 (我從代表開始,經歷了匿名函數和lambda語句)。 然后,我遇到了實現第一個系統時管理訂閱的問題。 我在這里很綠。

和往常一樣,Stackoverflow非常有幫助。 這個問題向我展示了如何創建清除所有用戶的功能。 就我的目的而言,這將足夠具體(清除所有並根據需要分配新的)。

我如何通知單個函數清除多個事件委托之一?

public delegate void AnEventHandler(object sender, EventArgs e);

public class EventPublisher :
{
    public event AnEventHandler GroupA;
    public event AnEventHandler GroupB;

    public void ClearSubscribers(AnEventHandler handlerToClear)
    {
        handlerToClear = null;
    }
}

我以為我可以這樣寫,而我的訂閱課程可以做到

(EventPublisher MyPublisher)

MyPublisher.ClearSubscribers(MyPublisher.GroupA);

但是可惜它告訴我只能將它與+ =或-=運算符一起使用,這讓我有些驚訝,因為我認為引用是可以接受的。

我也打算實現自己的add()和remove()函數。 關於它的問題是,它具有相同的問題:我需要6個事件處理程序。 當然,我不需要編寫6個並行無效函數和6對唯一的添加/刪除函數對嗎? 我的大腦在思考繼承,但點之間沒有聯系。

如果可以承受的話,將變量設置為null將刪除它的變量,然后重新設置它。

否則,你應該能夠做到這樣

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM