Я хочу следовать шаблонам проектирования передовой практики при разработке приложений WinForms.
У меня есть UserControl с кнопкой «Добавить», чтобы открыть новую форму, где пользователь может искать сотрудников. Как я могу организовать свой код?
Я хочу следовать шаблонам проектирования передовой практики при разработке приложений WinForms.
У меня есть UserControl с кнопкой «Добавить», чтобы открыть новую форму, где пользователь может искать сотрудников. Как я могу организовать свой код?
Если вы используете 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>());
}
}