如果我有这样的事件:
public delegate void MyEventHandler(object sender, EventArgs e);
public event MyEventHandler MyEvent;
并添加一个这样的事件处理程序:
MyEvent += MyEventHandlerMethod;
...然后可以以某种方式注册吗?换句话说 - 是否可能有类似的东西:
MyEvent.OnSubscribe += MySubscriptionHandler;
答案 0 :(得分:11)
与自动实现的属性类似,默认情况下也会自动实现事件。
您可以按如下方式展开event
的声明:
public event MyEventHandler MyEvent
{
add
{
...
}
remove
{
...
}
}
例如,请参阅How to: Use a Dictionary to Store Event Instances (C# Programming Guide)
请参阅Events get a little overhaul in C# 4, Part I: Locks,了解C#3和C#4之间自动实现的事件的不同之处。
答案 1 :(得分:6)
可以专门声明事件访问器,即添加和删除访问器。
这样做可以在添加新事件处理程序时执行自定义逻辑。
答案 2 :(得分:1)
答案 3 :(得分:1)
您可以声明自定义事件,例如伪代码:
class MyClass
{
public event EventHandler MyEvent
{
add { //someone subscribed to this event ! }
remove { //someone unsubscribed from this event ! }
}
...
}
答案 4 :(得分:1)
我想,你正在寻找事件访问者。如何自定义对订阅者的引用。这是你如何做到的
public class TestClass
{
private event EventHandler UnderlyingEvent;
public event EventHandler TestEvent
{
add
{
UnderlyingEvent += value;
}
remove
{
UnderlyingEvent -= value;
}
}
}
有关详细信息,请访问此文