我有一个包含以下事件的基类:
public event EventHandler Loading; public event EventHandler Finished;
在从该基类继承的类中,我尝试引发该事件:
this.Loading(this, new EventHandler()); // All we care about is which object is loading.
我收到以下错误:
事件“ BaseClass.Loading”只能出现在+ =或-=(BaseClass’)的左侧
我假设我无法像其他继承成员一样访问这些事件?
您要做的是:
在基类(已声明事件的位置)中,创建可用于引发事件的受保护方法:
public class MyClass { public event EventHandler Loading; public event EventHandler Finished; protected virtual void OnLoading(EventArgs e) { EventHandler handler = Loading; if( handler != null ) { handler(this, e); } } protected virtual void OnFinished(EventArgs e) { EventHandler handler = Finished; if( handler != null ) { handler(this, e); } } }
(请注意,您可能应该更改这些方法,以检查是否必须调用事件处理程序)。
然后,在从该基类继承的类中,您只需调用OnFinished或OnLoading方法来引发事件:
public AnotherClass : MyClass { public void DoSomeStuff() { ... OnLoading(EventArgs.Empty); ... OnFinished(EventArgs.Empty); } }