code_junkie

Raising C# events with an extension method - is it bad?

Nov 11th, 2011
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. public event EventHandler SomethingHappened;
  2. protected virtual void OnSomethingHappened(EventArgs e)
  3. {
  4. var handler = SomethingHappened;
  5. if (handler != null)
  6. handler(this, e);
  7. }
  8.  
  9. static public class EventExtensions
  10. {
  11. static public void RaiseEvent(this EventHandler @event, object sender, EventArgs e)
  12. {
  13. var handler = @event;
  14. if (handler != null)
  15. handler(sender, e);
  16. }
  17. static public void RaiseEvent<T>(this EventHandler<T> @event, object sender, T e)
  18. where T : EventArgs
  19. {
  20. var handler = @event;
  21. if (handler != null)
  22. handler(sender, e);
  23. }
  24. }
  25.  
  26. public event EventHandler SomethingHappened;
  27.  
  28. void SomeMethod()
  29. {
  30. this.SomethingHappened.RaiseEvent(this, EventArgs.Empty);
  31. }
  32.  
  33. public event EventHandler SomethingHappened = delegate {};
  34.  
  35. static public void RaiseEvent(this EventHandler @event, object sender, EventArgs e)
  36. {
  37. if (@event != null)
  38. @event(sender, e);
  39. }
  40.  
  41. static public void RaiseEvent<T>(this EventHandler<T> @event, object sender, T e)
  42. where T : EventArgs
  43. {
  44. if (@event != null)
  45. @event(sender, e);
  46. }
  47.  
  48. public event EventHandler SomethingHappened = delegate{};
  49.  
  50. static public void RaiseEvent(this EventHandler @event, object sender, EventArgs e)
  51. {
  52. @event(sender, e);
  53. }
  54.  
  55. SomethingHappened(this, new EventArgs(...));
  56.  
  57. SomethingHappend.RaiseEvent(this, new EventArgs(...));
Add Comment
Please, Sign In to add comment