-1
WinFormsアプリケーションを開発する際に、優れたプラクティスのデザインパターンに従いたいと考えています。UserControlからフォームを表示することをお勧めします。
「Add」ボタンを持つUserControlを使用して、ユーザーが従業員を検索できる新しいフォームを開きます。コードをどのように整理できますか?
WinFormsアプリケーションを開発する際に、優れたプラクティスのデザインパターンに従いたいと考えています。UserControlからフォームを表示することをお勧めします。
「Add」ボタンを持つUserControlを使用して、ユーザーが従業員を検索できる新しいフォームを開きます。コードをどのように整理できますか?
WinFormsを使用する場合は、MVP(Model-View-Presenter)デザインパターンを使用する必要があります。
public interface IBaseView
{
void Show();
void Close();
}
public interface ILoginView : IBaseView
{
string Login { get; }
string Password {get; }
event EventHandler SignIn { get; }
}
そして今、あなたのユーザーコントロールは、このインタフェースを実装する必要があります。この場合、各ビューは、例えばプロパティとイベントが含まれISomethingView
を所有しています。それぞれについて、また
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();
}
}
}
次の例のように、すべてのI*Vies
を解決するためにDIコンテナを使用することができます。
public class LoginUserControl : UserControl, ILoginView
{
public LoginUserControl()
{
this.loginPresenter = new LoginPresenter(this, DIContainer.Resolve<IOtherView>());
}
}
WinFormsでMVVMアーキテクチャを使用していますか?ドメイン/ビジネスエンティティオブジェクトが明確に定義されていますか?アプリケーションの範囲と設計に関する詳細情報が必要です。 – Dai
絶対ベストプラクティスに従う場合は、WinFormsを使用していない可能性があります。たとえば、WPFではなくWinFormsを使用するビジネス上の正当性は何ですか? – Dai
現在のところ、プロジェクトはシンプルですが、EmployeeクラスはEFによって作成されたモデルクラスの一部であり、MVPパターンに従いたいと考えています – apaz