【问题标题】:Overload the += event operator重载 += 事件运算符
【发布时间】:2010-11-11 01:25:45
【问题描述】:

有没有办法在 C# 中重载事件 += 和 -= 运算符?我想要做的是获取一个事件侦听器并将其注册到不同的事件。所以是这样的:

SomeEvent += new Event(EventMethod);

那么它实际上不是附加到 SomeEvent,而是附加到不同的事件:

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

谢谢

【问题讨论】:

    标签: c# events operator-overloading overloading event-listener


    【解决方案1】:

    这并不是真正的超载,但你可以这样做:

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

    更多信息请访问switchonthecode.com

    【讨论】:

      【解决方案2】:

      您可以在 C# 中使用 custom event accessors 执行此操作。

      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),相应的事件处理程序将被自动添加/删除。

      【讨论】:

        【解决方案3】:

        您可以使用 + 和 - 运算符组合委托

        How to: Combine Delegates (Multicast Delegates)(C# Programming Guide)

        【讨论】:

          【解决方案4】:

          如果你只是想摆脱一些打字,你可以这样做

          SomeEvent += MyMethod;
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-02-19
            • 1970-01-01
            • 2011-06-21
            • 2012-09-14
            • 2011-04-08
            • 2012-03-10
            相关资源
            最近更新 更多