是否可以在C#中订阅事件订阅?

Las*_*sen 6 c# events

如果我有这样的事件:

public delegate void MyEventHandler(object sender, EventArgs e);
public event MyEventHandler MyEvent;
Run Code Online (Sandbox Code Playgroud)

并添加这样的事件处理程序:

MyEvent += MyEventHandlerMethod;
Run Code Online (Sandbox Code Playgroud)

......那么有可能以某种方式注册吗?换句话说 - 是否可能有类似的东西:

MyEvent.OnSubscribe += MySubscriptionHandler;
Run Code Online (Sandbox Code Playgroud)

dtb*_*dtb 11

与自动实现的属性类似,默认情况下也会自动实现事件.

您可以扩展event如下声明:

public event MyEventHandler MyEvent
{
    add
    {
        ...
    }
    remove
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

例如,请参阅如何:使用字典存储事件实例(C#编程指南)

请参阅事件在C#4中进行一些改革,第一部分:锁定 C#3和C#4之间自动实现事件的方式.


kfu*_*ang 6

可以专门声明事件访问器,即添加和删除访问器.

这样做可以在添加新事件处理程序时执行自定义逻辑.