每当班级中的属性设为SET时,我都希望触发一个事件。我希望能够在设置我的一个属性时触发相同的事件。我有(大约12个)



public class MyClass
{
    private int _myHeight;
    private int _myWidth;

public int myHeight
{
    get { return myHeight; }
    set { myHeight = value;
         //This fires event!
         }
}
public int myWidth
{
    get { return myWidth; }
    set { myWidth = value;
         //This will fire the same event!
}


我对事件本身并不陌生,但是对创建事件却并不陌生。我一直使用Windows应用程序中使用的“开箱即用”事件。有任何想法吗?

最佳答案

使用INotifyPropertyChange是正确的方法(因为它是.NET中广泛使用的类型,因此任何人都可以理解您的意图)。但是,如果您只是想以一些简单的代码开头,那么该类的实现可能如下所示:

public class MyClass
{
  private int _myHeight;
  public event EventHandler Changed;

  protected void OnChanged() {
    if (Changed != null) Changed(this, EventArgs.Empty);
  }

  public int myHeight
  {
    get { return myHeight; }
    set {
      myHeight = value;
      OnChanged();
    }
  }
  // Repeat the same pattern for all other properties
}


这是编写代码的最直接的方法(这可能对学习有好处,而对较大的实际应用程序则不利)。

09-04 19:37