[英]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.