有没有办法在C#中重载事件+ =和 - =运算符?我想做的是拿一个事件监听器并将其注册到不同的事件。所以像这样:
SomeEvent += new Event(EventMethod);
然后它不是附加到SomeEvent,而是实际上附加到不同的事件:
DifferentEvent += (the listener above);
AnotherDiffEvent += (the listener above);
由于
答案 0 :(得分:21)
它并没有真正超载,但这是你如何做到的:
public event MyDelegate SomeEvent
{
add
{
DifferentEvent += value;
AnotherDiffEvent += value;
}
remove
{
DifferentEvent -= value;
AnotherDiffEvent-= value;
}
}
的详情
答案 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;