Delegate 与 MulticastDelegate 委托的单波与多波模式

  1. classTestDelegate
  2. {
  3. publicdelegatevoidEventHanding();
  4. publiceventEventHandingOnFireEvnet;
  5. protectedvoidRegistEvent()
  6. {
  7. Delegated1=newEventHanding(test1);
  8. Delegated2=newEventHanding(test2);
  9. Delegated3=newEventHanding(test3);
  10. Delegated4=newEventHanding(test4);
  11. DelegatenewEvent1=Delegate.Combine(d1,d2);
  12. DelegatenewEvent2=Delegate.Combine(d3,d4);
  13. //新合并的委托是一个新的对象
  14. if(Object.ReferenceEquals(d2,newEvent1))
  15. {
  16. stringstr=string.Empty;
  17. }
  18. if(d2.Method.ToString().CompareTo(newEvent1.Method.ToString())==0)
  19. {
  20. stringstr=string.Empty;
  21. }
  22. EventHandingnewEvent=(EventHanding)Delegate.Combine(newEvent1,newEvent2);
  23. OnFireEvnet+=newEvent;
  24. }
  25. protectedvoidFireEvent()
  26. {
  27. //单波
  28. MulticastDelegatedel=(MulticastDelegate)OnFireEvnet;
  29. del.Method.Invoke(this,null);
  30. //多波
  31. OnFireEvnet();
  32. }
  33. inti=0;
  34. publicvoidtest1()
  35. {
  36. i++;
  37. }
  38. publicvoidtest2()
  39. {
  40. i++;
  41. }
  42. publicvoidtest3()
  43. {
  44. i++;
  45. }
  46. publicvoidtest4()
  47. {
  48. i++;
  49. }
  50. publicstaticvoidTest()
  51. {
  52. TestDelegatetest=newTestDelegate();
  53. test.RegistEvent();
  54. test.FireEvent();
  55. }
  56. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值