2009-07-15 95 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),並且適當調整事件處理程序將被添加/自動刪除。