重载+ =事件运算符

时间:2009-07-15 15:43:08

标签: c# events operator-overloading overloading event-listener

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

SomeEvent += new Event(EventMethod);

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

DifferentEvent += (the listener above);
AnotherDiffEvent += (the listener above);

由于

4 个答案:

答案 0 :(得分:21)

它并没有真正超载,但这是你如何做到的:

public event MyDelegate SomeEvent
{
    add
    {
        DifferentEvent += value;
        AnotherDiffEvent += value;
    }
    remove
    {
        DifferentEvent -= value;
        AnotherDiffEvent-= value;
    }
}

有关switchonthecode.com

的详情

答案 1 :(得分:6)

您可以使用custom event accessors在C#中执行此操作。

public EventHandler DiffEvent;
public EventHandler AnotherDiffEvent;

public event EventHandler SomeEvent
{
    add
    {
        DiffEvent += value;
        AnotherDiffEvent += value;
    }
    remove
    {
        DiffEvent -= value;
        AnotherDiffEvent -= value;
    }
}

这意味着您只需致电SomeEvent += new EventHandler(Foo)SomeEvent -= new EventHandler(Foo),即可自动添加/删除相应的事件处理程序。

答案 2 :(得分:0)

您可以使用+和 - 运算符

组合代理

请参阅How to: Combine Delegates (Multicast Delegates)(C# Programming Guide)

答案 3 :(得分:-4)

如果您只想远离某些打字,可以这样做

SomeEvent += MyMethod;