代码之家  ›  专栏  ›  技术社区  ›  Brian Ortiz

避免大量自定义事件?

  •  4
  • Brian Ortiz  · 技术社区  · 16 年前

    我正在重构的类库有大量事件(超过50个),每个事件都有自己的委托,尽管许多事件具有相同的参数。我开始切换它们来使用EventHandler和自定义EventArgs,但事实证明这是一个冗长而耗时的过程。

    有没有一个更简单的方法来处理这样的情况,当你有大量的事件?

    2 回复  |  直到 16 年前
        1
  •  6
  •   Jon Skeet    16 年前

    您当然不需要自己的委托类型—您可以使用 EventHandler<TEventArgs> 哪里 TEventArgs EventArgs 子类。

    重构一堆乱七八糟的东西总是既费时又烦人。如果改为使用方法组转换,将来会更容易:

    // This...
    foo.SomeEvent += new MyCustomEventHandler(SomeMethod);
    
    // becomes this..
    foo.SomeEvent += SomeMethod;
    

    如果 SomeEvent SomeMethod 而订阅将只工作,而不必再次更改。

    是否需要几种不同的 事件参数

        2
  •  2
  •   Taylor Leese    16 年前

    我使用下面这样的模板化事件参数类来避免创建大量自定义事件参数类。

    public class MessageEventArgs<T> : EventArgs
    {
        public MessageEventArgs(T message)
        {
            Message = message;
        }
    
        public T Message
        {
            get;
            private set;
        }
    }
    
    推荐文章