我一直在用C#学习事件系统,所以我做理解为什么你不能直接访问事件的订阅者。 (我从代表开始,经历了匿名函数和lambda语句)。然后我在实现我的第一个系统时遇到了管理订阅的问题。我在这里很绿。
像往常一样Stackoverflow非常有帮助。 This question shows me how to make a function to clear all the subscribers.就我的目的而言,这将是足够具体的(清除所有内容并根据需要分配新内容)。
如何通知单个功能清除多个活动代表中的一个?
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);
但是它告诉我只能使用+ =或 - =运算符,这让我感到有些惊讶,因为我认为引用是可以接受的。
I also do intend to implement my own add() and remove() functions.关于这一点的是,它有同样的问题:我需要6个事件处理程序。当然,我不需要编写6个并行无效函数和6对独特的添加/删除函数?我的大脑在思考遗传,但点不能连接。