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

本文关键字:事件 是否 | 更新日期: 2023-09-27 18:33:28

如果我有这样的事件:

public delegate void MyEventHandler(object sender, EventArgs e);
public event MyEventHandler MyEvent;

并添加如下事件处理程序:

MyEvent += MyEventHandlerMethod;

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

MyEvent.OnSubscribe += MySubscriptionHandler;

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

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

您可以按如下方式展开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 ! }
    }

    ...
}