我想在开发WinForms应用程序时遵循良好实践设计模式。
我有一个带有“添加”按钮的UserControl来打开一个新表单,其中de user可以搜索Employees。我如何组织我的代码?
答案 0 :(得分:1)
如果使用WinForms,则应使用MVP(Model-View-Presenter)设计模式。在这种情况下,每个视图都有自己的ISomethingView
,其中包含属性和事件,例如:
public interface IBaseView
{
void Show();
void Close();
}
public interface ILoginView : IBaseView
{
string Login { get; }
string Password {get; }
event EventHandler SignIn { get; }
}
现在你的UserControl必须实现这个界面。
对于每个视图,您还必须创建一个负责视图和业务逻辑之间通信的演示者:
public LoginPresenter
{
// private variables
public LoginPresenter(ILoginView loginView, IOtherView otherView)
{
this.loginView = loginView;
this.otherView = otherView;
this.loginView.SignUp += OnSignUp;
}
private void OnSignUp(object sender, EventArgs eventArgs)
{
if (this.authService.Login(this.loginView.UserName, this.loginView.Password))
{
this.loginView.Close();
this.otherView.Show();
}
}
}
您可以使用DI容器解析所有I*Vies
,例如:
public class LoginUserControl : UserControl, ILoginView
{
public LoginUserControl()
{
this.loginPresenter = new LoginPresenter(this, DIContainer.Resolve<IOtherView>());
}
}