¿Qué es una buena manera de poner en práctica los acontecimientos en Passive View?

StackOverflow https://stackoverflow.com/questions/1682352

  •  18-09-2019
  •  | 
  •  

Pregunta

Estoy aprendiendo el patrón de Vista pasiva para mantener mi aplicación C # WinForms más fáciles de probar y mantener.

Ha funcionado bien hasta ahora, pero me pregunto si hay una mejor manera de poner en práctica Eventos que la forma en que estoy haciendo ahora (y mantenerlos comprobable). Esto es lo que parece (omitiendo el código no es relevante para este ejemplo). básicamente lo Busco si es que hay una forma de omitir conectar eventos tanto en el presentador y en forma, yo preferiría hacer todo el trabajo en el presentador.

Mi punto de vista es el siguiente:

public interface IApplicationView
{
    event EventHandler Find;
}

Mi presentadora se ve así:

public class ApplicationPresenter
{
    private IApplicationView _view;
    private IApplicationDomain _domain;

    public ApplicationPresenter(IApplicationView view) : this(view, new ApplicationDomain()) {}
    public ApplicationPresenter(IApplicationView view, IApplicationDomain domain) {
        _view = view;
        _domain = domain;

        HookupEventHandlersTo(view);
    }

    private void HookupEventHandlersTo(IApplicationView view)
    {
        view.Find += delegate { FindAction(); };
    }

    public void FindAction()
    {
        // ...
    }
}

Mi WinForm se ve así:

public partial class Form1 : Form, IApplicationView
{
    private ApplicationPresenter _presenter;
    public event EventHandler Find = delegate {};

    public Form1()
    {
        InitializeComponent();
        _presenter = new ApplicationPresenter(this);
        HookupEvents();
    }

    private void HookupEvents()
    {
        searchButton.Click += Find;
    }
}

Gracias!

¿Fue útil?

Solución

Otro gran recurso para el aprendizaje de MVP con WinForms es Jeremy Miller Construir su propio taxi serie. He encontrado esta increíblemente útil cuando estaba aprendiendo,

El artículo sobre ver a Presentador Comunicación será útil para usted; hay una buena discusión aquí en el uso de eventos vs realizar llamadas directas. Aún mejor, el Evento agregador artículo presenta un 'mecanismo de publicación / suscripción' que se puede utilizar en lugar de los acontecimientos, mientras se mantiene el código comprobable. Este es el enfoque que yo personalmente prefiero, y han tenido buen éxito con.

Otros consejos

Salida esta ejemplo de cómo poner en práctica la vista pasiva. Tiene una buena manera de Conexión / desconexión de eventos entre la vista y el controlador que pone la mayor parte de los trabajos en el controlador.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top