6

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

SomeEvent += new Event(EventMethod);

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

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

谢谢

4

4 回答 4

21

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

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

关于此的更多信息switchonthecode.com

于 2009-07-15T15:45:36.553 回答
6

您可以在 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)orSomeEvent -= new EventHandler(Foo)并且适当的事件处理程序将自动添加/删除。

于 2009-07-15T15:47:27.347 回答
0

您可以使用 + 和 - 运算符组合委托

请参阅如何:组合委托(多播委托)(C# 编程指南)

于 2009-07-15T15:49:11.507 回答
-4

如果您只是想摆脱一些打字,您可以这样做

SomeEvent += MyMethod;
于 2009-07-15T15:46:40.343 回答