A alguns anos atras atuei em um projeto C# Desktop do qual utilizei a arquitetura MVP.
Baseado em conclusões que tirei referente algumas pesquisas e tutorias que fiz sobre o padrão na época,
desenvolvi minha solução semelhante ao exemplo abaixo.
Todo o formulário implementa uma intereface referente ao mesmo que estaria no projeto VIEW portanto
se eu tenho o formulário login eu devo ter a view View.ILogin e consequentemente a criação de todas as propriedades
e eventos.
public partial class Login : ILogin
{
//blablabla
}
Cada propriedade do formulário deverá retornar o conteudo da caixa de texto ou setar valor na caixa de texto como no trecho abaixo
public string Login
{
get{ return txt_Login.Text; }
set { txt_Login.Text = value; }
}
public string Senha
{
get { return txt_senha.Text; }
set { txt_senha.Text = value; }
}
Na tela de login eu tenho 2 caixas de texto (Login e Senha) e um botão Acessar, portanto na minha VIEW eu teria as propriedades LOGIN e SENHA e o evento Acessar
public interface ILogin
{
string Login { get; set; }
string Senha { get; set; }
event AcessarDelegate OnAcessar;
}
public delegate bool AcessarDelegate();
Logo para cada tela eu também tenho um
PRESENTATION então nesse exemplo eu tbém tenho o loginPresentation
namespace Presentation
{
public class LoginPresentation
{
private ILoginPresentation _LoginPresentation;
public LoginPresentation(ILoginPresentation view)
{
_LoginPresentation = view;
_LoginPresentation.OnAcessar += new AcessarDelegate(LoginPresentation_OnAcessar);
}
public UsuarioDTO LoginPresentation_OnAcessar()
{
bool _retValidacao;
try
{
_busUsuario = new Usuario();
_UsuarioDTO = new UsuarioDTO();
_UsuarioDTO.Login = _LoginPresentation.Login
_UsuarioDTO.Senha = _LoginPresentation.Senha
/*
NESTE PONTO CHAMA-SE A BUSINESS QUE FAZ A VALIDAÇÃO DE ACESSO passando o objeto _UsuarioDTO
*/
return _retValidacao;
}
catch (Exception ex)
{
throw ex;
}
}
}
}
Note que no construtor do meu presentation eu passo uma instancia da view. Veja no trecho abaixo como ficaria o LOAD do seu formulário LOGIN e o evento click do botão acessar
public partial class Login : ILogin
{
Presentation.Acesso.Login _Presentation;
protected void Page_Load(object sender, EventArgs e)
{
_Presentation = new Presentation.Acesso.Login(this);
}
protected void bt_Acessar_Click(object sender, EventArgs e)
{
if (OnAcessar()==true)
blablablabla
else
blablablabla
}
}
public event AcessarDelegate OnAcessar;
Espero ter ajudado