是否可以在 C# 中订阅事件订阅
本文关键字:事件 是否 | 更新日期: 2023-09-27 18:33:28
如果我有这样的事件:
public delegate void MyEventHandler(object sender, EventArgs e);
public event MyEventHandler MyEvent;
并添加如下事件处理程序:
MyEvent += MyEventHandlerMethod;
。那么是否可以以某种方式注册它?换句话说 - 是否有可能拥有类似的东西:
MyEvent.OnSubscribe += MySubscriptionHandler;
与自动实现的属性类似,默认情况下事件也是自动实现的。
您可以按如下方式展开event
的声明:
public event MyEventHandler MyEvent
{
add
{
...
}
remove
{
...
}
}
例如,请参阅如何:使用字典存储事件实例(C# 编程指南)
请参阅 C# 4中的事件大修,第 I 部分:锁,了解 C# 3 和 C# 4 之间自动实现的事件有何不同。
可以专门声明事件访问器,即添加和删除访问器。
这样做可以在添加新事件处理程序时执行自定义逻辑。
定义事件时,实际上可以使用较长的格式在人们附加或删除事件时执行更多代码。
查看有关添加和移除关键字的信息。
我猜,您正在寻找事件访问器。自定义对订阅者的引用的方法。这是你可以做到的
public class TestClass
{
private event EventHandler UnderlyingEvent;
public event EventHandler TestEvent
{
add
{
UnderlyingEvent += value;
}
remove
{
UnderlyingEvent -= value;
}
}
}
欲了解更多信息,请访问这篇文章
http://msdn.microsoft.com/en-us/magazine/cc163533.aspx
如果您声明自定义事件,则有可能,例如以下伪代码:
class MyClass
{
public event EventHandler MyEvent
{
add { //someone subscribed to this event ! }
remove { //someone unsubscribed from this event ! }
}
...
}