1

假设我有一个产品类:

public class Product
{
    public event ProductColorChangedEventHandler ColorChanged;
    protected virtual void OnColorChanged()
    {
        if (null != ColorChanged)
          ColorChanged();
    }
}

如果我从这个类继承并且我需要在颜色发生变化时捕获通知,那么OnColorChanged在我的子类构造函数中覆盖或挂钩事件会更好吗?

4

3 回答 3

3

我认为首选的方法是订阅子类中的事件,如下所示:

public class SubProduct : Product
{
  public SubProduct()
  {
      ColorChanged += new ProductColorChangedEventHandler(color_changed);
  }

  private color_changed(object sender, EventArgs e)
  {
      //do stuff
  }
}
于 2013-02-25T19:24:39.110 回答
0

您可以覆盖该方法

public override OnColorChanged()
{
    //do stuff
}
于 2013-02-25T19:35:09.940 回答
0

当您仍在设计应用程序时,挂钩并不是正确的方法。

在您的子类中订阅事件,是您问题的干净解决方案。

这是一本好书:在 Wiki 上挂钩

于 2013-02-25T19:46:12.657 回答