Tengo un WinForm y pocas propiedades que están establecidas en él.
por ejemplo: nombre, dirección se aceptan en el formulario.
(muchos más propiedades en ejemplo real)Refactorización del código de Form.ShowDialog() a MVP
La implementación actual es algo similar a
frmName frmView = new frmName(); //frmName is WINFORM
frmView.Name= "ABC"; //any valid string or read this from file
frmView.Address="SomeAddress"; //any valid address or read this from file
if (frmView.ShowDialog() == DialogResult.OK)
{
//OK CLICK PROCESS and
// get new values edited by user
string name = frmView .Name;
string address = frmView.Address;
doProcessing(name,address);
}
else{
//Ignore cancel click..
}
¿Cómo convierto esto a una aplicación basada Winform MVP.
también tenemos que refactorizar el procesamiento realiza en ShowDialog() al presentador/modelo
(¡no sé exactamente dónde hacerlo)?
También es necesario evitar escribir código en el formulario. (Vista pasiva)
Gracias All.
thx por respuesta. También puede explicar el manejo de los errores parte .. (3er párrafo ... "En algunos casos donde ....") – Amitd
@Amitd: en el ejemplo del código en mi respuesta, la solicitud del usuario se reenvía al presentador al * cerrar * el cuadro de diálogo. ¿Qué pasa si esa solicitud da como resultado un error? Por ejemplo, ese mismo nombre y dirección ya se ha procesado y guardado en alguna parte. Parece mejor mostrar el error desde el cuadro de diálogo y permitir que el usuario cambie su nombre o dirección, en lugar de tener que abrir un cuadro de diálogo * nuevo * para volver a intentarlo. Puede hacer esto pasando el presentador al cuadro de diálogo, pidiéndole que haga la solicitud y solo lo cierre si * no * da como resultado un error. – Rich
@ Rich: Oh, está bien. Entonces, ¿tendré que mantener al presentador como una propiedad de la vista en lugar de crear un presentador nuevo dentro de la vista? – Amitd