2009-07-15 100 views
6

有没有办法在C#中重载事件+ =和 - =操作符?我想要做的是接收一个事件监听器并注册它到不同的事件。因此,像这样:重载+ =事件操作符

SomeEvent += new Event(EventMethod); 

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

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

感谢

回答

21

这不是真正的超载,但这里是你怎么做:

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

关于此问题的更多信息switchonthecode.com

-4

如果你只是希望得到一些打字的时候,你可以做到这一点

SomeEvent += MyMethod; 
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),并且适当调整事件处理程序将被添加/自动删除。