2009-07-15 33 views
6

Có cách nào để quá tải sự kiện + = và - = toán tử trong C# không? Những gì tôi muốn làm là đưa một người nghe sự kiện và đăng ký nó cho các sự kiện khác nhau. Vì vậy, một cái gì đó như thế này:Quá tải toán tử + = sự kiện

SomeEvent += new Event(EventMethod); 

Sau đó, thay vì đính kèm để SomeEvent, nó thực sự gắn với các sự kiện khác nhau:

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

Cảm ơn

Trả lời

21

Nó không thực sự quá tải, nhưng đây là cách bạn làm điều đó :

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

Thông tin thêm về điều này trên switchonthecode.com

-4

Nếu bạn chỉ tìm cách để thoát khỏi một số đánh máy, bạn có thể làm điều này

SomeEvent += MyMethod; 
6

Bạn có thể làm điều này trong C# sử dụng custom event accessors.

public EventHandler DiffEvent; 
public EventHandler AnotherDiffEvent; 

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

Có nghĩa là bạn chỉ có thể gọi SomeEvent += new EventHandler(Foo) hoặc SomeEvent -= new EventHandler(Foo) và sự kiện thích hợp xử lý sẽ được thêm vào/xóa tự động.