Mi clase con un evento:eventos de la convención - Yo no lo entiendo
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));
}
}
Derivado clase de evento:
public class WindowTypeEventArgs : EventArgs
{
public readonly WindowType windowType;
public WindowTypeEventArgs(WindowType windowType)
{
this.windowType = windowType;
}
}
alguna otra clase que se registran al evento:
private void SetupEvents()
{
this.WindowModel.WindowChanged += this.ChangeWindow;
}
private void ChangeWindow(object sender, WindowTypeEventArgs e)
{
//change window
}
¿Qué obtuve al seguir la convención .Net? Tendría más sentido tener un contrato como éste
public delegate void WindowChangedHandler(WindowType windowType);
public event WindowChangedHandler WindowChanged;
Hacerlo de esta manera, no necesito para crear una nueva clase y es más fácil de entender. No estoy codificando una biblioteca .Net. Este código solo se usará en este proyecto. Me gustan las convenciones, pero ¿tengo razón cuando digo que en este ejemplo no tiene sentido o no he entendido bien algo?
Me gusta mucho esta respuesta! El primer punto es tan obvio, pero algo en lo que no pensé. Segundo punto que no sabía pero es muy bueno :) No estoy seguro de entender tu tercer punto. ¡Gracias! –
@bobjink: ¡Me alegro de que sea útil! Mi tercer punto fue sobre poder enviar datos de vuelta al objeto que llama al evento. Usando el enfoque 'EventArgs', puede permitir que el consumidor de su evento modifique una propiedad en él, como en la clase' CancelEventArgs', lo que le permitirá pasar datos nuevamente a usted. –
¡Ya veo! Gracias :) –