重载+ =事件运算符

SwD*_*n81 6 c# events overloading operator-overloading event-listener

有没有办法在C#中重载事件+ =和 - =运算符?我想做的是拿一个事件监听器并将其注册到不同的事件.所以像这样:

SomeEvent += new Event(EventMethod);
Run Code Online (Sandbox Code Playgroud)

然后它不是附加到SomeEvent,而是实际上附加到不同的事件:

DifferentEvent += (the listener above);
AnotherDiffEvent += (the listener above);
Run Code Online (Sandbox Code Playgroud)

谢谢

Dyk*_*kam 21

这不是真的超载,但这是你如何做到的:

public event MyDelegate SomeEvent
{
    add
    {
        DifferentEvent += value;
        AnotherDiffEvent += value;
    }
    remove
    {
        DifferentEvent -= value;
        AnotherDiffEvent-= value;
    }
}
Run Code Online (Sandbox Code Playgroud)

有关这方面的更多信息,请访问switchonthecode.com


Nol*_*rin 6

您可以使用自定义事件访问器在C#中执行此操作.

public EventHandler DiffEvent;
public EventHandler AnotherDiffEvent;

public event EventHandler SomeEvent
{
    add
    {
        DiffEvent += value;
        AnotherDiffEvent += value;
    }
    remove
    {
        DiffEvent -= value;
        AnotherDiffEvent -= value;
    }
}
Run Code Online (Sandbox Code Playgroud)

这意味着您可以简单地调用SomeEvent += new EventHandler(Foo)SomeEvent -= new EventHandler(Foo)自动添加/删除适当的事件处理程序.