使用事件的类:
public class WindowModel
{
public delegate void WindowChangedHandler(object source, WindowTypeEventArgs e);
public event WindowChangedHandler WindowChanged;
public void GotoWindow(WindowType windowType)
{
this.currentWindow = windowType;
this.WindowChanged.Invoke(this, new WindowTypeEventArgs(windowType));
}
}
派生事件类:
public class WindowTypeEventArgs : EventArgs
{
public readonly WindowType windowType;
public WindowTypeEventArgs(WindowType windowType)
{
this.windowType = windowType;
}
}
其他注册到该事件的类:
private void SetupEvents()
{
this.WindowModel.WindowChanged += this.ChangeWindow;
}
private void ChangeWindow(object sender, WindowTypeEventArgs e)
{
//change window
}
我从遵循 .Net 约定中获得了什么? 像这样有一个契约更有意义。
public delegate void WindowChangedHandler(WindowType windowType);
public event WindowChangedHandler WindowChanged;
用这种方法,我不需要创建一个新的类,而且更容易理解。 我没有编写一个.Net库。这段代码只会在这个项目中使用。我喜欢约定,但是在这个例子中我是否正确地理解了它或者我误解了什么?
EventArgs
方法,您可以允许事件的消费者修改其上的属性,例如CancelEventArgs
类上的属性,这将允许它将数据传递回您。 - Adam Robinson