2009-06-29 7 views
4

派生クラスでChangeHappendを使用することは可能ですか?もしそうなら、どのように?
そうでない場合は、代わりに何をすべきですか?イベントハンドラをベースクラスから使用する方法

class Base 
{ 
    public delegate void ChangeHandler(object sender); 
    public event ChangeHandler ChangeHappend; 

    private int _foo; 
    public int Foo 
    { 
     set 
     { 
      if (_foo == value) return; 
      _foo = value; 
      ChangeHappend(this); 
     } 
    } 
} 

class Derived : Base 
{ 
    private int _bar; 
    public int Bar 
    { 
     set 
     { 
      if (_bar == value) return; 
      _bar = value; 
      ChangeHappend(this); // This line gives an error. How can I use ChangeHappend here in Derived? 
     } 
    } 
} 

答えて

9

使用する標準パターン:オン[EVENTNAME]

public class MyBaseClass { 
    protected virtual void OnSomethingHappend(EventArgs e) { 
     EventHandler handler = this.SomethingHappend; 
     if (null != handler) { handler(this, e); } 
    } 
    public event EventhHandler SomethingHappend; 
} 

public MyDerivedClass : MyBaseClass { 
    public void DoSomething() { 
     this.OnSomethingHappend(EventArgs.Empty); 
    } 
} 
関連する問題