2009-06-29 5 views
4

Ist es möglich, ChangeHappend in meiner abgeleiteten Klasse zu verwenden. Wenn das so ist, wie?
Wenn nicht, was soll ich stattdessen tun?Wie verwende ich eventhandler aus Basisklasse

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? 
     } 
    } 
} 

Antwort

9

Verwenden Standardmuster: Auf [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); 
    } 
}